| // 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 <stdlib.h> | 
 | #include <string> | 
 |  | 
 | #include "third_party/minizip/src/ioapi.h" | 
 | #include "third_party/minizip/src/ioapi_mem.h" | 
 | #include "third_party/minizip/src/zip.h" | 
 |  | 
 | const char kTestFileName[] = "test.zip"; | 
 | const zip_fileinfo kZipFileInfo = {}; | 
 |  | 
 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { | 
 |   zlib_filefunc_def filefunc32 = {}; | 
 |   ourmemory_t zmem = {}; | 
 |   zmem.grow = 1; | 
 |  | 
 |   fill_memory_filefunc(&filefunc32, &zmem); | 
 |  | 
 |   zipFile zip_file = zipOpen2(nullptr /* pathname */, APPEND_STATUS_CREATE, | 
 |                               nullptr /* global comment */, &filefunc32); | 
 |  | 
 |   if (zip_file) { | 
 |     int open_result = zipOpenNewFileInZip( | 
 |         zip_file, kTestFileName, &kZipFileInfo, nullptr /* local extra field */, | 
 |         0u /* local extra field size*/, nullptr /* global extra field */, | 
 |         0u /* global extra field size */, nullptr /* comment */, Z_DEFLATED, | 
 |         Z_DEFAULT_COMPRESSION); | 
 |  | 
 |     if (open_result == ZIP_OK) { | 
 |       zipWriteInFileInZip(zip_file, data, size); | 
 |       zipCloseFileInZip(zip_file); | 
 |     } | 
 |  | 
 |     zipClose(zip_file, nullptr /* global comment */); | 
 |   } | 
 |  | 
 |   free(zmem.base); | 
 |  | 
 |   return 0; | 
 | } |