xref: /aosp_15_r20/system/libziparchive/libziparchive_fuzzer.cpp (revision adcb0a6279ea715828f9bc5e351569419e478774)
1*adcb0a62SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0
2*adcb0a62SAndroid Build Coastguard Worker 
3*adcb0a62SAndroid Build Coastguard Worker #include <stddef.h>
4*adcb0a62SAndroid Build Coastguard Worker #include <stdint.h>
5*adcb0a62SAndroid Build Coastguard Worker 
6*adcb0a62SAndroid Build Coastguard Worker #include <ziparchive/zip_archive.h>
7*adcb0a62SAndroid Build Coastguard Worker 
8*adcb0a62SAndroid Build Coastguard Worker // See current fuzz coverage here:
9*adcb0a62SAndroid Build Coastguard Worker // https://android-coverage.googleplex.com/fuzz_targets/libziparchive_fuzzer/index.html
10*adcb0a62SAndroid Build Coastguard Worker 
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)11*adcb0a62SAndroid Build Coastguard Worker extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
12*adcb0a62SAndroid Build Coastguard Worker   ZipArchiveHandle handle = nullptr;
13*adcb0a62SAndroid Build Coastguard Worker   if (OpenArchiveFromMemory(data, size, "fuzz", &handle) == 0) {
14*adcb0a62SAndroid Build Coastguard Worker     // Iterate through all the entries.
15*adcb0a62SAndroid Build Coastguard Worker     void* cookie;
16*adcb0a62SAndroid Build Coastguard Worker     if (StartIteration(handle, &cookie) == 0) {
17*adcb0a62SAndroid Build Coastguard Worker       ZipEntry ze;
18*adcb0a62SAndroid Build Coastguard Worker       std::string name;
19*adcb0a62SAndroid Build Coastguard Worker       int result;
20*adcb0a62SAndroid Build Coastguard Worker       while ((result = Next(cookie, &ze, &name)) == 0) {
21*adcb0a62SAndroid Build Coastguard Worker       }
22*adcb0a62SAndroid Build Coastguard Worker       EndIteration(cookie);
23*adcb0a62SAndroid Build Coastguard Worker     }
24*adcb0a62SAndroid Build Coastguard Worker   }
25*adcb0a62SAndroid Build Coastguard Worker   CloseArchive(handle);
26*adcb0a62SAndroid Build Coastguard Worker   return 0;
27*adcb0a62SAndroid Build Coastguard Worker }
28