]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
added value type checks
authorRuss Combs <rucombs@cisco.com>
Wed, 1 Oct 2014 14:20:25 +0000 (10:20 -0400)
committerRuss Combs <rucombs@cisco.com>
Wed, 1 Oct 2014 14:20:25 +0000 (10:20 -0400)
ChangeLog
src/framework/parameter.cc
src/managers/module_manager.cc

index efa3f7ebd1fbf688352012b836f3eea07e7601f4..81e2a5be53f2d74c764860472140b84d1fc88b57 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,7 @@
 -- fixed byte_extract leak, session flow data leak
 -- changed pcre JIT to be optional by #define; need autofoo
 -- added support for name / type bindings
+-- added value type checks
 
 121
 -- valgrind fixes
index dd0d517ce4cd457ab46eb260c4648b89ae54376d..5b6488697b23c6ac6c083c70f5aa52ad67a63a5d 100644 (file)
@@ -38,6 +38,9 @@ static bool valid_bool(Value& v, const char*)
 // FIXIT-L allow multiple , separated ranges
 static bool valid_int(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_NUM )
+        return false;
+
     if ( !r )
         return true;
 
@@ -70,6 +73,9 @@ static bool valid_int(Value& v, const char* r)
 // FIXIT-L allow multiple , separated ranges
 static bool valid_real(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_NUM )
+        return false;
+
     if ( !r )
         return true;
 
@@ -101,6 +107,9 @@ static bool valid_real(Value& v, const char* r)
 
 static bool valid_string(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     if ( r && !strcmp(r, "(optional)") )
         return true;
 
@@ -115,6 +124,9 @@ static bool valid_string(Value& v, const char* r)
 
 static bool valid_select(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     if ( !r )
         return false;
 
@@ -142,6 +154,9 @@ static unsigned get_index(const char* r, const char* t)
 
 static bool valid_enum(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     if ( !r )
         return false;
 
@@ -182,6 +197,9 @@ static unsigned split(const string& txt, vector<string>& strs)
 
 static bool valid_multi(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     if ( !r )
         return false;
 
@@ -208,6 +226,9 @@ static bool valid_multi(Value& v, const char* r)
 
 static bool valid_mac(Value& v, const char*)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     struct addr a;
 
     if ( addr_pton(v.get_string(), &a) )
@@ -224,6 +245,9 @@ static bool valid_mac(Value& v, const char*)
 
 static bool valid_ip4(Value& v, const char*)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     uint32_t ip4 = inet_addr(v.get_string());
 
     if ( ip4 == INADDR_NONE )
@@ -235,6 +259,9 @@ static bool valid_ip4(Value& v, const char*)
 
 static bool valid_addr(Value& v, const char*)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     struct addr a;
 
     if ( addr_pton(v.get_string(), &a) )
@@ -254,6 +281,9 @@ static bool valid_addr(Value& v, const char*)
 
 static bool valid_bit_list(Value& v, const char* r)
 {
+    if ( v.get_type() != Value::VT_STR )
+        return false;
+
     string pl = v.get_string();
     string bs;
 
index d35ffe9d24412ddcf075c28a6c87aca407ae33da..bf5c514e45121a0e722ad816b1bf962bf8ffcb47 100644 (file)
@@ -340,7 +340,7 @@ static bool set_value(const char* fqn, Value& v)
     }
 
     if ( v.get_type() == Value::VT_STR )
-        ErrorMessage("ERROR invalid %s = %s\n", fqn, v.get_string());
+        ErrorMessage("ERROR invalid %s = '%s'\n", fqn, v.get_string());
     else if ( v.get_real() == v.get_long() )
         ErrorMessage("ERROR invalid %s = %ld\n", fqn, v.get_long());
     else