blob: b78d2ade177ebda70936221f94a22997eae0013c [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <memory.h>
#include <stddef.h>
#include <stdint.h>
#include "third_party/minizip/src/ioapi.h"
#include "third_party/minizip/src/ioapi_mem.h"
#include "third_party/minizip/src/unzip.h"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
zlib_filefunc_def filefunc32 = {};
ourmemory_t unzmem = {};
unzFile handle;
unzmem.size = size;
unzmem.base = reinterpret_cast<char*>(const_cast<uint8_t*>(data));
unzmem.grow = 0;
int err = UNZ_OK;
unz_file_info64 file_info = {};
char filename_inzip[256] = {};
fill_memory_filefunc(&filefunc32, &unzmem);
handle = unzOpen2(nullptr, &filefunc32);
err = unzGoToFirstFile(handle);
while (err == UNZ_OK) {
err = unzGetCurrentFileInfo64(handle, &file_info, filename_inzip,
sizeof(filename_inzip), NULL, 0, NULL, 0);
if (err != UNZ_OK) {
break;
}
err = unzOpenCurrentFile(handle);
if (err != UNZ_OK) {
break;
}
unzCloseCurrentFile(handle);
err = unzGoToNextFile(handle);
}
unzClose(handle);
return 0;
}