trafgen: lexer: return if no needle found
authorDaniel Borkmann <dborkman@redhat.com>
Wed, 27 Mar 2013 08:30:24 +0000 (27 09:30 +0100)
committerDaniel Borkmann <dborkman@redhat.com>
Wed, 27 Mar 2013 08:30:24 +0000 (27 09:30 +0100)
Also return if no needle has been found in the shell code haystack.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
trafgen_lexer.l

index 2df1881..20b6efe 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <stdbool.h>
 
 #include "trafgen_parser.tab.h"
 #include "xmalloc.h"
+#include "built_in.h"
 
 extern void yyerror(const char *);
 
 static char *try_convert_shellcode(char *sstr)
 {
        int j = 0;
+       bool found_any = false;
        char *bstr, *ostr = sstr, *hay;
        size_t blen, slen = strlen(sstr), tot = 0;
        const char *needle = "\\x";
@@ -37,14 +40,12 @@ static char *try_convert_shellcode(char *sstr)
        hay = sstr;
        while ((hay = strstr(hay, needle)) != NULL ) {
                hay += strlen(needle) + 2;
+               found_any = true;
                tot++;
        }
 
-       if (blen != tot) {
-               printf("Warning: mixed shellcode with strings, "
-                      "using strings!\n");
+       if (blen != tot || !found_any)
                return sstr;
-       }
 
        blen += 2;
        bstr = xzmalloc(blen);