From 359422c97cce93bbb27051f9df3efb45bd0b9052 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sat, 23 Aug 2025 11:18:44 +0200 Subject: settings file writing --- libs/zip/fuzz/fuzz_stream.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 libs/zip/fuzz/fuzz_stream.c (limited to 'libs/zip/fuzz/fuzz_stream.c') diff --git a/libs/zip/fuzz/fuzz_stream.c b/libs/zip/fuzz/fuzz_stream.c new file mode 100644 index 0000000..6c557de --- /dev/null +++ b/libs/zip/fuzz/fuzz_stream.c @@ -0,0 +1,40 @@ +#include "zip.h" +#include +#include +#include + +int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size) { + /* Discard inputs larger than 1MB. */ + static const size_t MaxSize = 1024 * 1024; + if (size < 1 || size > MaxSize) { + return 0; + } + + char *outbuf = NULL; + size_t outbufsize = 0; + { + struct zip_t *zip = + zip_stream_open(NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w'); + zip_entry_open(zip, "test"); + zip_entry_write(zip, data, size); + zip_entry_close(zip); + zip_stream_copy(zip, (void **)&outbuf, &outbufsize); + zip_stream_close(zip); + } + + void *inbuf = NULL; + size_t inbufsize = 0; + { + struct zip_t *zip = zip_stream_open(outbuf, outbufsize, 0, 'r'); + zip_entry_open(zip, "test"); + zip_entry_read(zip, &inbuf, &inbufsize); + zip_entry_close(zip); + zip_stream_close(zip); + } + free(inbuf); + free(outbuf); + + assert(inbufsize == size); + + return 0; +} -- cgit v1.2.3-70-g09d2