]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rule parsing: valid that input rule string is UTF8
authorJason Ish <jason.ish@oisf.net>
Fri, 4 Sep 2020 16:45:52 +0000 (10:45 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 7 Sep 2020 12:24:48 +0000 (14:24 +0200)
Before parsing a rule string, validate that it is UTF-8 first.

Related Redmine issue:
https://redmine.openinfosecfoundation.org/issues/3850

src/detect-parse.c
src/util-error.c
src/util-error.h

index b9962dbf409c032b9091d6fa0f854c14e23ff7f1..b7b1e5980fb557c5692d26b43b7517c04e28fbd6 100644 (file)
@@ -1212,6 +1212,11 @@ static int SigParse(DetectEngineCtx *de_ctx, Signature *s,
 {
     SCEnter();
 
+    if (!rs_check_utf8(sigstr)) {
+        SCLogError(SC_ERR_RULE_INVALID_UTF8, "rule is not valid UTF-8");
+        SCReturnInt(-1);
+    }
+
     s->sig_str = SCStrdup(sigstr);
     if (unlikely(s->sig_str == NULL)) {
         SCReturnInt(-1);
index 0a5496767f0bc78852b040b2be51472cb2164413..64b4555c33104cef2be04766d4a8cb232985c068 100644 (file)
@@ -376,6 +376,7 @@ const char * SCErrorToString(SCError err)
         CASE_CODE (SC_WARN_PATH_READ_ERROR);
         CASE_CODE (SC_ERR_PLUGIN);
         CASE_CODE(SC_ERR_LOG_OUTPUT);
+        CASE_CODE(SC_ERR_RULE_INVALID_UTF8);
 
         CASE_CODE (SC_ERR_MAX);
     }
index 3a78ae9df5c63977b841c7a76b0269072df21696..54b320a07c88bef5a31ad0d14274034e89559073 100644 (file)
@@ -366,6 +366,7 @@ typedef enum {
     SC_ERR_HTTP2_LOG_GENERIC,
     SC_ERR_PLUGIN,
     SC_ERR_LOG_OUTPUT,
+    SC_ERR_RULE_INVALID_UTF8,
 
     SC_ERR_MAX
 } SCError;