]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #3421: JS Normalizer: regex literal detection
authorMike Stepanek (mstepane) <mstepane@cisco.com>
Mon, 16 May 2022 12:11:19 +0000 (12:11 +0000)
committerMike Stepanek (mstepane) <mstepane@cisco.com>
Mon, 16 May 2022 12:11:19 +0000 (12:11 +0000)
Merge in SNORT/snort3 from ~OSHUMEIK/snort3:js_sc_regex_op to master

Squashed commit of the following:

commit 6282b69c758f5aee95bf88c412fd0d8ed15d4240
Author: Oleksii Shumeiko <oshumeik@cisco.com>
Date:   Fri May 13 14:29:19 2022 +0300

    utils: allow regex literals after operator

src/utils/js_tokenizer.l
src/utils/test/js_normalizer_test.cc

index f130c523a1b83276e8ddd175adbc9f1dd211a4e9..cf6f02de03dda00d45afbfd57f6d169ccecd31c1 100644 (file)
@@ -2762,7 +2762,7 @@ JSTokenizer::JSRet JSTokenizer::operator_prefix()
     EXEC(do_semicolon_insertion(ASI_GROUP_6))
     EXEC(do_operator_spacing())
     ECHO;
-    BEGIN(divop);
+    BEGIN(regst);
     set_ident_norm(true);
     return EOS;
 }
@@ -2786,7 +2786,7 @@ JSTokenizer::JSRet JSTokenizer::general_operator()
     dealias_prefix_reset();
     EXEC(do_operator_spacing())
     ECHO;
-    BEGIN(divop);
+    BEGIN(regst);
     set_ident_norm(true);
     return EOS;
 }
index fba4949588ecb1c457d170d29aa30c97aaceae0a..8c5d7b9f2ff46ff93a92940148eb4a1eb2ea8609 100644 (file)
@@ -1111,6 +1111,14 @@ static const char syntax_cases_expected24[] =
     "var a=/[[[[/]]]]/;"
     "var b=/[[[[";
 
+static const char syntax_cases_buf25[] =
+    "return /regex0/.foo + /regex1/.bar ;"
+    "return /regex2/.baz * /regex3/.qux ;";
+
+static const char syntax_cases_expected25[] =
+    "return /regex0/.var_0000+/regex1/.var_0001;"
+    "return /regex2/.var_0002*/regex3/.var_0003;";
+
 TEST_CASE("syntax cases", "[JSNormalizer]")
 {
     SECTION("variables")
@@ -1193,6 +1201,10 @@ TEST_CASE("syntax cases", "[JSNormalizer]")
         NORMALIZE(syntax_cases_buf22);
         VALIDATE(syntax_cases_buf22, syntax_cases_expected22);
     }
+    SECTION("regex after operator")
+    {
+        NORMALIZE_S(syntax_cases_buf25, syntax_cases_expected25);
+    }
 }
 
 TEST_CASE("bad tokens", "[JSNormalizer]")