| Index: testing/libfuzzer/fuzzers/zlib_uncompress_fuzzer.cc
|
| diff --git a/testing/libfuzzer/fuzzers/zlib_uncompress_fuzzer.cc b/testing/libfuzzer/fuzzers/zlib_uncompress_fuzzer.cc
|
| index 952fe24771bb35c31e4bfbb1041bccfc4a0207e8..ccf3571f0c8bd53ab6d65127c8fb911835106898 100644
|
| --- a/testing/libfuzzer/fuzzers/zlib_uncompress_fuzzer.cc
|
| +++ b/testing/libfuzzer/fuzzers/zlib_uncompress_fuzzer.cc
|
| @@ -3,16 +3,22 @@
|
| // found in the LICENSE file.
|
|
|
| #include <stdint.h>
|
| +#include <string.h>
|
|
|
| #include "third_party/zlib/zlib.h"
|
|
|
| // Entry point for LibFuzzer.
|
| extern "C" int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
| - uint8_t buffer[1024 * 1024] = { 0 };
|
| - size_t buffer_length = sizeof(buffer);
|
| - if (Z_OK != uncompress(buffer, &buffer_length, data, size)) {
|
| - return 0;
|
| - }
|
| + const int NUM_ITEMS = 1024 * 1024;
|
| + const int BUF_SIZE = NUM_ITEMS * sizeof(uint8_t);
|
| + uint8_t *buffer = new uint8_t[NUM_ITEMS];
|
| + uLongf buffer_length = (uLongf)BUF_SIZE;
|
| + memset(buffer, 0, BUF_SIZE);
|
|
|
| - return 0;
|
| + if (Z_OK != uncompress(buffer, &buffer_length, data, size)) {
|
| + delete[] buffer;
|
| + return 0;
|
| + }
|
| + delete[] buffer;
|
| + return 0;
|
| }
|
|
|