]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
fuzz: improves fuzz target applayerparserparse
authorPhilippe Antoine <contact@catenacyber.fr>
Fri, 19 Jun 2020 09:34:44 +0000 (11:34 +0200)
committerVictor Julien <victor@inliniac.net>
Tue, 7 Jul 2020 08:41:01 +0000 (10:41 +0200)
Does not proceed final chunk if we got an error previously
Flips the direction for last chunk as usual

src/tests/fuzz/fuzz_applayerparserparse.c

index e91ac4138be0aaafae89ed249cb85fae068a1f9f..ae9beaaf8c35f7bc7ca38c0b4fc12fa025c094f1 100644 (file)
@@ -126,6 +126,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
             free(isolatedBuffer);
             flags &= ~(STREAM_START);
             if (f->alparser && AppLayerParserStateIssetFlag(f->alparser, APP_LAYER_PARSER_EOF)) {
+                //no final chunk
+                alsize = 0;
                 break;
             }
         }
@@ -137,6 +139,15 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
         alnext = memmem(albuffer, alsize, separator, 4);
     }
     if (alsize > 0 ) {
+        if (flip) {
+            flags |= STREAM_TOCLIENT;
+            flags &= ~(STREAM_TOSERVER);
+            flip = 0;
+        } else {
+            flags |= STREAM_TOSERVER;
+            flags &= ~(STREAM_TOCLIENT);
+            flip = 1;
+        }
         flags |= STREAM_EOF;
         isolatedBuffer = malloc(alsize);
         if (isolatedBuffer == NULL) {