]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
detect/prefilter: fix handling of prefilter as fast_pattern alias
authorVictor Julien <victor@inliniac.net>
Sat, 20 Feb 2021 14:53:51 +0000 (15:53 +0100)
committerVictor Julien <victor@inliniac.net>
Mon, 1 Mar 2021 11:59:37 +0000 (12:59 +0100)
(cherry picked from commit 0dd5921bc9791ac733c8d264212d69e661309df1)

src/detect-prefilter.c

index edc0da97289ab3cfc3be15cf830fd94de5d7b24d..533c79c48fa07ac8f9b0def1d0b94440bab69238 100644 (file)
@@ -75,13 +75,6 @@ static int DetectPrefilterSetup (DetectEngineCtx *de_ctx, Signature *s, const ch
         SCLogError(SC_ERR_INVALID_SIGNATURE, "prefilter needs preceding match");
         SCReturnInt(-1);
     }
-    if (sigmatch_table[sm->type].SupportsPrefilter == NULL) {
-        SCLogError(SC_ERR_INVALID_SIGNATURE, "prefilter is not supported for %s",
-                sigmatch_table[sm->type].name);
-        SCReturnInt(-1);
-    }
-
-    s->init_data->prefilter_sm = sm;
 
     /* if the sig match is content, prefilter should act like
      * 'fast_pattern' w/o options. */
@@ -99,11 +92,18 @@ static int DetectPrefilterSetup (DetectEngineCtx *de_ctx, Signature *s, const ch
         }
         cd->flags |= DETECT_CONTENT_FAST_PATTERN;
     } else {
+        if (sigmatch_table[sm->type].SupportsPrefilter == NULL) {
+            SCLogError(SC_ERR_INVALID_SIGNATURE, "prefilter is not supported for %s",
+                    sigmatch_table[sm->type].name);
+            SCReturnInt(-1);
+        }
         s->flags |= SIG_FLAG_PREFILTER;
 
         /* make sure setup function runs for this type. */
         de_ctx->sm_types_prefilter[sm->type] = true;
     }
 
+    s->init_data->prefilter_sm = sm;
+
     SCReturnInt(0);
 }