Coverage Report

Created: 2026-05-30 06:32

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/miniz/tests/zip_fuzzer.c
Line
Count
Source
1
#include <stdint.h>
2
#include <inttypes.h>
3
4
#include "miniz.h"
5
6
static char filename[260];
7
static unsigned char read_buf[1024 * 256];
8
9
static const size_t filename_max = sizeof(filename);
10
static const size_t read_buf_size = sizeof(read_buf);
11
static const size_t data_max = 1024 * 256;
12
13
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
14
5.20k
{
15
5.20k
    if (size > data_max)
16
4
        return 0;
17
18
5.19k
    int ret = 0;
19
5.19k
    mz_zip_archive zip;
20
5.19k
    mz_zip_zero_struct(&zip);
21
22
5.19k
    mz_uint flags = 0;
23
24
5.19k
    if (!mz_zip_reader_init_mem(&zip, data, size, flags))
25
1.41k
        return 0;
26
27
3.78k
    mz_uint i, files;
28
29
3.78k
    files = mz_zip_reader_get_num_files(&zip);
30
31
43.7k
    for (i = 0; i < files; i++)
32
39.9k
    {
33
39.9k
        mz_zip_clear_last_error(&zip);
34
35
39.9k
        if (mz_zip_reader_is_file_a_directory(&zip, i))
36
2.75k
            continue;
37
38
37.1k
        mz_zip_validate_file(&zip, i, MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY);
39
40
37.1k
        if (mz_zip_reader_is_file_encrypted(&zip, i))
41
2.66k
            continue;
42
43
34.4k
        mz_zip_clear_last_error(&zip);
44
45
34.4k
        mz_uint ret = mz_zip_reader_get_filename(&zip, i, filename, filename_max);
46
47
34.4k
        if (mz_zip_get_last_error(&zip))
48
0
            continue;
49
50
34.4k
        mz_zip_archive_file_stat file_stat = { 0 };
51
34.4k
        mz_bool status = mz_zip_reader_file_stat(&zip, i, &file_stat) != 0;
52
53
34.4k
        if ((file_stat.m_method) && (file_stat.m_method != MZ_DEFLATED))
54
4.40k
            continue;
55
56
30.0k
        mz_zip_reader_extract_file_to_mem(&zip, file_stat.m_filename, read_buf, read_buf_size, 0);
57
30.0k
    }
58
59
3.78k
cleanup:
60
3.78k
    mz_zip_reader_end(&zip);
61
62
3.78k
    return ret;
63
3.78k
}