Coverage Report

Created: 2025-10-10 06:17

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
1.99k
int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size) {
7
  /* Discard inputs larger than 1MB. */
8
1.99k
  static const size_t MaxSize = 1024 * 1024;
9
1.99k
  if (size < 1 || size > MaxSize) {
10
0
    return 0;
11
0
  }
12
13
1.99k
  char *outbuf = NULL;
14
1.99k
  size_t outbufsize = 0;
15
1.99k
  {
16
1.99k
    struct zip_t *zip =
17
1.99k
        zip_stream_open(NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
18
1.99k
    zip_entry_open(zip, "test");
19
1.99k
    zip_entry_write(zip, data, size);
20
1.99k
    zip_entry_close(zip);
21
1.99k
    zip_stream_copy(zip, (void **)&outbuf, &outbufsize);
22
1.99k
    zip_stream_close(zip);
23
1.99k
  }
24
25
1.99k
  void *inbuf = NULL;
26
1.99k
  size_t inbufsize = 0;
27
1.99k
  {
28
1.99k
    struct zip_t *zip = zip_stream_open(outbuf, outbufsize, 0, 'r');
29
1.99k
    zip_entry_open(zip, "test");
30
1.99k
    zip_entry_read(zip, &inbuf, &inbufsize);
31
1.99k
    zip_entry_close(zip);
32
1.99k
    zip_stream_close(zip);
33
1.99k
  }
34
1.99k
  free(inbuf);
35
1.99k
  free(outbuf);
36
37
1.99k
  assert(inbufsize == size);
38
39
1.99k
  return 0;
40
1.99k
}