Coverage Report

Created: 2025-12-31 06:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/zip/fuzz/fuzz_stream.c
Line
Count
Source
1
#include "zip.h"
2
#include <assert.h>
3
#include <stdint.h>
4
#include <stdlib.h>
5
6
2.00k
int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size) {
7
  /* Discard inputs larger than 1MB. */
8
2.00k
  static const size_t MaxSize = 1024 * 1024;
9
2.00k
  if (size < 1 || size > MaxSize) {
10
0
    return 0;
11
0
  }
12
13
2.00k
  char *outbuf = NULL;
14
2.00k
  size_t outbufsize = 0;
15
2.00k
  {
16
2.00k
    struct zip_t *zip =
17
2.00k
        zip_stream_open(NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
18
2.00k
    zip_entry_open(zip, "test");
19
2.00k
    zip_entry_write(zip, data, size);
20
2.00k
    zip_entry_close(zip);
21
2.00k
    zip_stream_copy(zip, (void **)&outbuf, &outbufsize);
22
2.00k
    zip_stream_close(zip);
23
2.00k
  }
24
25
2.00k
  void *inbuf = NULL;
26
2.00k
  size_t inbufsize = 0;
27
2.00k
  {
28
2.00k
    struct zip_t *zip = zip_stream_open(outbuf, outbufsize, 0, 'r');
29
2.00k
    zip_entry_open(zip, "test");
30
2.00k
    zip_entry_read(zip, &inbuf, &inbufsize);
31
2.00k
    zip_entry_close(zip);
32
2.00k
    zip_stream_close(zip);
33
2.00k
  }
34
2.00k
  free(inbuf);
35
2.00k
  free(outbuf);
36
37
2.00k
  assert(inbufsize == size);
38
39
2.00k
  return 0;
40
2.00k
}