summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analysis/scan/grammar.y9
-rw-r--r--tests/analysis/scan/fuzzing.py17
2 files changed, 24 insertions, 2 deletions
diff --git a/src/analysis/scan/grammar.y b/src/analysis/scan/grammar.y
index 9c3b08b..898b135 100644
--- a/src/analysis/scan/grammar.y
+++ b/src/analysis/scan/grammar.y
@@ -343,8 +343,13 @@ string_decl : IDENTIFIER ASSIGN PLAIN_STRING
{
GSearchPattern *__pat;
__pat = g_scan_rule_get_local_variable(*built_rule, $1.data);
- $$ = g_scan_match_counter_new(__pat);
- g_object_unref(G_OBJECT(__pat));
+ if (__pat == NULL)
+ $$ = NULL;
+ else
+ {
+ $$ = g_scan_match_counter_new(__pat);
+ g_object_unref(G_OBJECT(__pat));
+ }
}
;
diff --git a/tests/analysis/scan/fuzzing.py b/tests/analysis/scan/fuzzing.py
index 0870ed4..2140972 100644
--- a/tests/analysis/scan/fuzzing.py
+++ b/tests/analysis/scan/fuzzing.py
@@ -46,3 +46,20 @@ rule test {
with self.assertRaisesRegex(ValueError, 'Unable to create content scanner'):
scanner = ContentScanner(rule)
+
+
+ def testNonExistingPattern(self):
+ """Avoid to count the matches of a non-existing pattern."""
+
+ rule = '''
+rule test {
+
+ condition:
+ #badid
+
+}
+'''
+
+ with self.assertRaisesRegex(ValueError, 'Unable to create content scanner'):
+
+ scanner = ContentScanner(rule)