]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Combining fuzz_data_producer restrict calls into a single function
authorDario Pavlovic <dariop@fb.com>
Wed, 11 Sep 2019 17:09:29 +0000 (10:09 -0700)
committerDario Pavlovic <dariop@fb.com>
Wed, 11 Sep 2019 17:09:29 +0000 (10:09 -0700)
tests/fuzz/block_round_trip.c
tests/fuzz/dictionary_decompress.c
tests/fuzz/dictionary_round_trip.c
tests/fuzz/fuzz_data_producer.c
tests/fuzz/fuzz_data_producer.h
tests/fuzz/simple_compress.c
tests/fuzz/simple_decompress.c
tests/fuzz/simple_round_trip.c
tests/fuzz/stream_decompress.c
tests/fuzz/stream_round_trip.c

index 9ead57a5af150c384e283a113763bc603ec9e6f5..a0079d352e6e97fe339b6f01eaa5ead0fcedaba8 100644 (file)
@@ -55,8 +55,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     int cLevel = FUZZ_dataProducer_uint32(producer) % kMaxClevel;
 
index 54903f1f65e672ca0d20cd39697496254553f752..3bbd9bf5b024e389f564039f9da79daae45e7157 100644 (file)
@@ -27,8 +27,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     FUZZ_dict_t dict;
     ZSTD_DDict* ddict = NULL;
index cd1ca38f799a0adb20a4d1a3d29a8072496d83f5..5a4b9503a2f35aec9a0fb8be8ce7b6624b6719b3 100644 (file)
@@ -71,8 +71,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     size_t const rBufSize = size;
     void* rBuf = malloc(rBufSize);
index 6dcc1413da983730408c198185aca2476f3ad3ed..d6893e4f9a3a08dd5bb7e204db9beeccaaa579aa 100644 (file)
@@ -65,3 +65,10 @@ size_t FUZZ_dataProducer_contract(FUZZ_dataProducer_t *producer, size_t newSize)
     producer->size = newSize;
     return remaining;
 }
+
+size_t FUZZ_dataProducer_reserveDataPrefix(FUZZ_dataProducer_t *producer)
+{
+    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(
+                                  producer, 0, producer->size);
+    return FUZZ_dataProducer_contract(producer, producerSliceSize);
+}
index 668c87f29b755513d7e6d3f2d8ec164047e60dab..8eea1e2568ea5681c40e22e0ece65186c184ac49 100644 (file)
@@ -44,10 +44,13 @@ uint32_t FUZZ_dataProducer_uint32(FUZZ_dataProducer_t *producer);
 /* Returns the size of the remaining bytes of data in the producer */
 size_t FUZZ_dataProducer_remainingBytes(FUZZ_dataProducer_t *producer);
 
-/* Tells the producer to contract to newSize bytes of data it currently uses,
-counted from the end, and forget about the rest. If newSize > current data size,
-nothing happens. Returns the number of bytes the producer won't use anymore,
-after contracting. */
+/* Restricts the producer to only the last newSize bytes of data.
+If newSize > current data size, nothing happens. Returns the number of bytes
+the producer won't use anymore, after contracting. */
 size_t FUZZ_dataProducer_contract(FUZZ_dataProducer_t *producer, size_t newSize);
 
+/* Restricts the producer to use only the last X bytes of data, where X is
+ a random number in the interval [0, data_size]. Returns the size of the
+ remaining data the producer won't use anymore (the prefix). */
+size_t FUZZ_dataProducer_reserveDataPrefix(FUZZ_dataProducer_t *producer);
 #endif // FUZZ_DATA_PRODUCER_H
index b8c6394cba315e4c6ddc15ec85452e3a231958a9..74ab0d63197a9f9e3344c47754570fe50f39fb29 100644 (file)
@@ -27,8 +27,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     size_t const maxSize = ZSTD_compressBound(size);
     size_t const bufSize = FUZZ_dataProducer_uint32Range(producer, 0, maxSize);
index 5c7680bf00053d83edfedae08361b66939bf96b3..6182746a1d163c1431892ac3dd9b9a957b6425a8 100644 (file)
@@ -26,8 +26,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     if (!dctx) {
         dctx = ZSTD_createDCtx();
index f19e37a35a51942bc0c109403f4bd6d69386ad6b..4a07d16a4cfe02ad2e301c3edda7866ca58de9bb 100644 (file)
@@ -55,8 +55,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     /* Half of the time fuzz with a 1 byte smaller output size.
      * This will still succeed because we don't use a dictionary, so the dictID
index 4d5c499660fb11abf896f4c79a747ebe58cdf33a..70582e11bc6c512a21120819762177a06ea97b2d 100644 (file)
@@ -56,8 +56,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     /* Allocate all buffers and contexts if not already allocated */
     if (!buf) {
index 02bb26daaf4c8450f603f263d9f55aec8751cf59..08a4927a6e8fed559d19f96002430689793022b3 100644 (file)
@@ -128,8 +128,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *src, size_t size)
     /* Give a random portion of src data to the producer, to use for
     parameter generation. The rest will be used for (de)compression */
     FUZZ_dataProducer_t *producer = FUZZ_dataProducer_create(src, size);
-    size_t producerSliceSize = FUZZ_dataProducer_uint32Range(producer, 0, size);
-    size = FUZZ_dataProducer_contract(producer, producerSliceSize);
+    size = FUZZ_dataProducer_reserveDataPrefix(producer);
 
     size_t neededBufSize;
     neededBufSize = ZSTD_compressBound(size) * 5;