]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
jsonbuilder: add debug_validate to state
authorJason Ish <jason.ish@oisf.net>
Mon, 29 Jun 2020 17:10:40 +0000 (11:10 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 29 Jun 2020 18:10:46 +0000 (20:10 +0200)
If debug validation is enabled, panic on invalid state errors.

For example, calling close on an already closed jsonbuilder
object.

rust/src/jsonbuilder.rs

index a16823a591c37fcafa881fa75f2755b7a3ebf75f..75cce54f323871d6c7e2a9db7fc90c8e320bdb1a 100644 (file)
@@ -164,7 +164,10 @@ impl JsonBuilder {
                 self.pop_state();
                 Ok(self)
             }
-            _ => Err(JsonError::InvalidState),
+            State::None => {
+                debug_validate_fail!("invalid state");
+                Err(JsonError::InvalidState)
+            },
         }
     }
 
@@ -226,6 +229,7 @@ impl JsonBuilder {
                 self.buf.push_str(",\"");
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -247,6 +251,7 @@ impl JsonBuilder {
                 self.buf.push(',');
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -268,6 +273,7 @@ impl JsonBuilder {
                 self.buf.push(',');
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -292,7 +298,10 @@ impl JsonBuilder {
                 self.encode_string(val)?;
                 Ok(self)
             }
-            _ => Err(JsonError::InvalidState),
+            _ => {
+                debug_validate_fail!("invalid state");
+                Err(JsonError::InvalidState)
+            }
         }
     }
 
@@ -313,6 +322,7 @@ impl JsonBuilder {
                 self.buf.push(',');
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -329,6 +339,7 @@ impl JsonBuilder {
                 self.set_state(State::ObjectNth);
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -352,6 +363,7 @@ impl JsonBuilder {
                 self.buf.push(',');
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -365,7 +377,10 @@ impl JsonBuilder {
         match self.current_state() {
             State::ObjectNth => self.buf.push(','),
             State::ObjectFirst => self.set_state(State::ObjectNth),
-            _ => return Err(JsonError::InvalidState),
+            _ => {
+                debug_validate_fail!("invalid state");
+                return Err(JsonError::InvalidState);
+            }
         }
         self.buf.push('"');
         self.buf.push_str(key);
@@ -395,6 +410,7 @@ impl JsonBuilder {
                 self.set_state(State::ObjectNth);
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -414,6 +430,7 @@ impl JsonBuilder {
                 self.set_state(State::ObjectNth);
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -439,6 +456,7 @@ impl JsonBuilder {
                 self.set_state(State::ObjectNth);
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }
@@ -458,6 +476,7 @@ impl JsonBuilder {
                 self.set_state(State::ObjectNth);
             }
             _ => {
+                debug_validate_fail!("invalid state");
                 return Err(JsonError::InvalidState);
             }
         }