#include "zip_read_fuzzer.cc"
#include <stdio.h>
#include <stdlib.h>

/* fuzz target entry point, works without libFuzzer */

int main(int argc, char **argv)
{
    FILE *f;
    char *buf = NULL;
    long siz_buf;

    if (argc < 2) {
        fprintf(stderr, "no input file\n");
        goto err;
    }

    f = fopen(argv[1], "rb");
    if (f == NULL) {
        fprintf(stderr, "error opening input file %s\n", argv[1]);
        goto err;
    }

    fseek(f, 0, SEEK_END);

    siz_buf = ftell(f);
    rewind(f);

    if (siz_buf < 1) {
	goto err;
    }

    buf = (char*)malloc(siz_buf);
    if (buf == NULL) {
        fprintf(stderr, "malloc() failed\n");
        goto err;
    }

    if (fread(buf, siz_buf, 1, f) != 1) {
        fprintf(stderr, "fread() failed\n");
        goto err;
    }

    (void)LLVMFuzzerTestOneInput((uint8_t*)buf, siz_buf);

err:
    free(buf);

    return 0;
}
