#include "../lib/zip.h"

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
{
    zip_source_t *src;
    zip_t *za;
    zip_error_t error;

    zip_error_init(&error);
    
    if ((src = zip_source_buffer_create(data, size, 0, &error)) == NULL)
    {
	    zip_error_fini(&error);
	    return 0;
    }

    if ((za = zip_open_from_source(src, 0, &error)) == NULL)
    {
        zip_source_free(src);
	    zip_error_fini(&error);
	    return 0;
    }
    
    zip_error_fini(&error);

    char buf[32768];
    unsigned long n = zip_get_num_entries(za, 0);

    zip_file_t *f;
    unsigned long i;
    for(i=0; i < n; i++)
    {
        f = zip_fopen_index(za, i, 0);
        if(f==NULL) continue;

        while(zip_fread(f, buf, 32768) > 0);
    
        zip_fclose(f);
    }

    zip_close(za);

    return 0;
}
