From: Eric Leblond Date: Fri, 29 Apr 2016 17:49:11 +0000 (+0200) Subject: detect-msg: fix option parsing X-Git-Tag: suricata-3.1RC1~227 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63937cd9039f7b5205ba732209b850396d07ede8;p=thirdparty%2Fsuricata.git detect-msg: fix option parsing Code removing the space before the double quote at msg option start was not working correctly for option starting with a space. --- diff --git a/src/detect-msg.c b/src/detect-msg.c index 8de5da5675..31484511a9 100644 --- a/src/detect-msg.c +++ b/src/detect-msg.c @@ -64,7 +64,7 @@ static int DetectMsgSetup (DetectEngineCtx *de_ctx, Signature *s, char *msgstr) /* Strip leading and trailing "s. */ if (msgstr[pos] == '\"') { - str = SCStrdup(msgstr+1); + str = SCStrdup(msgstr + pos + 1); if (unlikely(str == NULL)) goto error; if (strlen(str) && str[strlen(str) - 1] == '\"') { @@ -198,6 +198,36 @@ end: return result; } +static int DetectMsgParseTest03(void) +{ + int result = 0; + Signature *sig = NULL; + char *teststringparsed = "flow stateless to_server"; + DetectEngineCtx *de_ctx = DetectEngineCtxInit(); + if (de_ctx == NULL) + goto end; + + FILE *fd = SCClassConfGenerateValidDummyClassConfigFD01(); + SCClassConfLoadClassficationConfigFile(de_ctx, fd); + + sig = SigInit(de_ctx, "alert tcp any any -> any any (msg: \"flow stateless to_server\"; flow:stateless,to_server; content:\"flowstatelesscheck\"; classtype:bad-unknown; sid: 40000002; rev: 1;)"); + if(sig == NULL) + goto end; + + if (strcmp(sig->msg, teststringparsed) != 0) { + printf("got \"%s\", expected: \"%s\": ", sig->msg, teststringparsed); + goto end; + } + + result = 1; +end: + if (sig != NULL) + SigFree(sig); + if (de_ctx != NULL) + DetectEngineCtxFree(de_ctx); + return result; +} + #endif /* UNITTESTS */ /** @@ -208,6 +238,7 @@ void DetectMsgRegisterTests(void) #ifdef UNITTESTS /* UNITTESTS */ UtRegisterTest("DetectMsgParseTest01", DetectMsgParseTest01); UtRegisterTest("DetectMsgParseTest02", DetectMsgParseTest02); + UtRegisterTest("DetectMsgParseTest03", DetectMsgParseTest03); #endif /* UNITTESTS */ }