From: Russ Combs (rucombs) Date: Fri, 24 Feb 2017 14:26:36 +0000 (-0500) Subject: Merge pull request #824 in SNORT/snort3 from snort2lua_uricontent to master X-Git-Tag: 3.0.0-233~59 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=435bca22c75dc9fc67cb77a01d1214e91b6e3224;p=thirdparty%2Fsnort3.git Merge pull request #824 in SNORT/snort3 from snort2lua_uricontent to master Squashed commit of the following: commit 1d438f21c0bbd8dc6cc1630550ef97ebb719794d Author: Bhagya Tholpady Date: Thu Feb 23 11:16:34 2017 -0500 uricontent snort2lua updates --- diff --git a/tools/snort2lua/data/data_types/dt_rule.cc b/tools/snort2lua/data/data_types/dt_rule.cc index e300dca7f..d64a28f18 100644 --- a/tools/snort2lua/data/data_types/dt_rule.cc +++ b/tools/snort2lua/data/data_types/dt_rule.cc @@ -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; } } diff --git a/tools/snort2lua/data/data_types/dt_rule.h b/tools/snort2lua/data/data_types/dt_rule.h index a359bfe17..560bf6953 100644 --- a/tools/snort2lua/data/data_types/dt_rule.h +++ b/tools/snort2lua/data/data_types/dt_rule.h @@ -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); diff --git a/tools/snort2lua/data/dt_rule_api.cc b/tools/snort2lua/data/dt_rule_api.cc index 63febaf6a..fc14c6f0c 100644 --- a/tools/snort2lua/data/dt_rule_api.cc +++ b/tools/snort2lua/data/dt_rule_api.cc @@ -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!!"); } diff --git a/tools/snort2lua/data/dt_rule_api.h b/tools/snort2lua/data/dt_rule_api.h index 89c5aa5ec..7d2ce383b 100644 --- a/tools/snort2lua/data/dt_rule_api.h +++ b/tools/snort2lua/data/dt_rule_api.h @@ -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(); diff --git a/tools/snort2lua/rule_states/rule_content.cc b/tools/snort2lua/rule_states/rule_content.cc index c02800026..17845840c 100644 --- a/tools/snort2lua/rule_states/rule_content.cc +++ b/tools/snort2lua/rule_states/rule_content.cc @@ -34,7 +34,7 @@ template 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::convert(std::istringstream& data_stream) template static ConversionState* content_ctor(Converter& c) { - return new Content(c); + return new Content(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 =