xref: /aosp_15_r20/external/zlib/contrib/tests/fuzzers/uncompress_fuzzer.cc (revision 86ee64e75fa5f8bce2c8c356138035642429cd05)
1*86ee64e7SAndroid Build Coastguard Worker // Copyright 2015 The Chromium Authors
2*86ee64e7SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*86ee64e7SAndroid Build Coastguard Worker // found in the LICENSE file.
4*86ee64e7SAndroid Build Coastguard Worker 
5*86ee64e7SAndroid Build Coastguard Worker #include <stddef.h>
6*86ee64e7SAndroid Build Coastguard Worker #include <stdint.h>
7*86ee64e7SAndroid Build Coastguard Worker #include <string.h>
8*86ee64e7SAndroid Build Coastguard Worker 
9*86ee64e7SAndroid Build Coastguard Worker #include "zlib.h"
10*86ee64e7SAndroid Build Coastguard Worker 
11*86ee64e7SAndroid Build Coastguard Worker static Bytef buffer[256 * 1024] = {0};
12*86ee64e7SAndroid Build Coastguard Worker 
13*86ee64e7SAndroid Build Coastguard Worker // Entry point for LibFuzzer.
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)14*86ee64e7SAndroid Build Coastguard Worker extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
15*86ee64e7SAndroid Build Coastguard Worker   uLongf buffer_length = static_cast<uLongf>(sizeof(buffer));
16*86ee64e7SAndroid Build Coastguard Worker   if (Z_OK !=
17*86ee64e7SAndroid Build Coastguard Worker       uncompress(buffer, &buffer_length, data, static_cast<uLong>(size))) {
18*86ee64e7SAndroid Build Coastguard Worker     return 0;
19*86ee64e7SAndroid Build Coastguard Worker   }
20*86ee64e7SAndroid Build Coastguard Worker   return 0;
21*86ee64e7SAndroid Build Coastguard Worker }
22