]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Merge pull request #824 in SNORT/snort3 from snort2lua_uricontent to master
authorRuss Combs (rucombs) <rucombs@cisco.com>
Fri, 24 Feb 2017 14:26:36 +0000 (09:26 -0500)
committerRuss Combs (rucombs) <rucombs@cisco.com>
Fri, 24 Feb 2017 14:26:36 +0000 (09:26 -0500)
Squashed commit of the following:

commit 1d438f21c0bbd8dc6cc1630550ef97ebb719794d
Author: Bhagya Tholpady <bbantwal@cisco.com>
Date:   Thu Feb 23 11:16:34 2017 -0500

    uricontent snort2lua updates

tools/snort2lua/data/data_types/dt_rule.cc
tools/snort2lua/data/data_types/dt_rule.h
tools/snort2lua/data/dt_rule_api.cc
tools/snort2lua/data/dt_rule_api.h
tools/snort2lua/rule_states/rule_content.cc

index e300dca7f367cca3f6d9e217cbc1be1bf4635b21..d64a28f188ea1482fe21134b04f9ed1098349350 100644 (file)
@@ -79,7 +79,7 @@ void Rule::add_suboption(std::string keyword)
 void Rule::add_suboption(std::string keyword, std::string val)
 { options.back()->add_suboption(keyword, val); }
 
-void Rule::set_curr_options_buffer(std::string new_buffer)
+void Rule::set_curr_options_buffer(std::string new_buffer, bool add_option)
 {
     /* set the buffer if
      * 1) No buffer has been set and this is not the default "pkt_data" buffer
@@ -89,7 +89,10 @@ void Rule::set_curr_options_buffer(std::string new_buffer)
         (!sticky_buffer.empty() && sticky_buffer.compare(new_buffer)) )
     {
         RuleOption* new_opt = new RuleOption(new_buffer);
-        options.insert(options.end() - 1, new_opt);
+        if ( add_option )
+            options.push_back(new_opt);
+        else
+            options.insert(options.end() - 1, new_opt);
         sticky_buffer = new_buffer;
     }
 }
index a359bfe17b3fc51298fd0bc08085ceaa696996a5..560bf6953a86e594774e7363cf0f5dd6595676fb 100644 (file)
@@ -38,7 +38,7 @@ public:
     void add_option(std::string keyword, std::string data);
     void add_suboption(std::string keyword);
     void add_suboption(std::string keyword, std::string val);
-    void set_curr_options_buffer(std::string buffer);
+    void set_curr_options_buffer(std::string buffer, bool add_option);
     void update_rule_action(std::string);
 
     void add_comment(std::string comment);
index 63febaf6a4dc57785b3e78e61527e8245edf5370..fc14c6f0cfea34046c2c0712a4cde79cc16c5411 100644 (file)
@@ -173,10 +173,10 @@ void RuleApi::add_suboption(std::string keyword,
         DataApi::developer_error("Add some header data before adding content!!");
 }
 
-void RuleApi::set_curr_options_buffer(std::string buffer)
+void RuleApi::set_curr_options_buffer(std::string buffer, bool add_option)
 {
     if (curr_rule)
-        curr_rule->set_curr_options_buffer(buffer);
+        curr_rule->set_curr_options_buffer(buffer, add_option);
     else
         DataApi::developer_error("Add some header data before adding content!!");
 }
index 89c5aa5ecb5533d4594d470e345224095a44b213..7d2ce383bcc6d44acad5c6bedc15cce4a098c2c1 100644 (file)
@@ -65,7 +65,7 @@ public:
     void add_option(std::string keyword, std::string val);
     void add_suboption(std::string keyword);
     void add_suboption(std::string keyword, std::string val);
-    void set_curr_options_buffer(std::string buffer);
+    void set_curr_options_buffer(std::string buffer, bool add_option=false);
 
     void add_comment(std::string coment);
     void make_rule_a_comment();
index c02800026b827802927ce7050fef977b9fa115d1..17845840c874fa2913c9dd143c178c237ef3e2e0 100644 (file)
@@ -34,7 +34,7 @@ template<const std::string* option_name>
 class Content : public ConversionState
 {
 public:
-    Content(Converter& c) : ConversionState(c), sticky_buffer_set(false) { }
+    Content(Converter& c, bool val) : ConversionState(c), sticky_buffer_set(val) { }
     virtual ~Content() { }
     virtual bool convert(std::istringstream& data);
 
@@ -281,7 +281,7 @@ bool Content<option_name>::convert(std::istringstream& data_stream)
 template<const std::string* rule_name>
 static ConversionState* content_ctor(Converter& c)
 {
-    return new Content<rule_name>(c);
+    return new Content<rule_name>(c, false);
 }
 
 static const std::string content = "content";
@@ -292,9 +292,9 @@ static const std::string uricontent = "uricontent";
 //  So, just add the 'http_uri' option first, then parse as if content
 static ConversionState* uricontent_ctor(Converter& c)
 {
-    c.get_rule_api().add_option("http_uri");
     c.get_rule_api().add_comment("uricontent deprecated --> 'http_uri: content:'foo'");
-    return new Content<& content>(c);
+    c.get_rule_api().set_curr_options_buffer("http_uri", true);
+    return new Content<& content>(c, true);
 }
 
 static const ConvertMap rule_content_api =