Coverage Report

Created: 2026-05-30 07:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/gpac/testsuite/oss-fuzzers/fuzz_parse.c
Line
Count
Source
1
#include <stdio.h>
2
#include <unistd.h>
3
#include <gpac/isomedia.h>
4
#include <gpac/internal/isomedia_dev.h>
5
#include <gpac/media_tools.h>
6
#include <gpac/constants.h>
7
#include <gpac/setup.h>
8
9
/*
10
** Reproducer command-line:
11
** MP4Box -fuzz-chk <poc>
12
*/
13
14
4
int LLVMFuzzerInitialize(int *argc, char ***argv) {
15
4
    gf_log_set_tool_level(GF_LOG_ALL, GF_LOG_QUIET);
16
4
    return 0;
17
4
}
18
19
24.1k
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
20
24.1k
    if (size < 8 || size > 65536) return 0;
21
22
24.0k
    char filename[256];
23
24.0k
    sprintf(filename, "/tmp/libfuzzer.%d", getpid());
24
24.0k
    FILE *fp = fopen(filename, "wb");
25
24.0k
    if (!fp) {
26
0
        return 0;
27
0
    }
28
24.0k
    fwrite(data, size, 1, fp);
29
24.0k
    fclose(fp);
30
31
24.0k
    GF_ISOFile *movie = NULL;
32
24.0k
    movie = gf_isom_open_file(filename, GF_ISOM_OPEN_READ_DUMP, NULL);
33
24.0k
    if (movie != NULL) {
34
17.0k
        u32 i, count = gf_isom_get_track_count(movie);
35
17.6k
        for (i = 1; i <= count && i <= 16; i++) {
36
518
            gf_isom_get_media_type(movie, i);
37
518
            gf_isom_get_media_subtype(movie, i, 1);
38
518
            gf_isom_get_sample_count(movie, i);
39
518
            gf_isom_get_media_timescale(movie, i);
40
41
518
            u32 w, h;
42
518
            gf_isom_get_visual_info(movie, i, 1, &w, &h);
43
44
518
            u32 sr, nb_ch, bps;
45
518
            gf_isom_get_audio_info(movie, i, 1, &sr, &nb_ch, &bps);
46
47
518
            GF_DecoderConfig *dcfg = gf_isom_get_decoder_config(movie, i, 1);
48
518
            if (dcfg) gf_odf_desc_del((GF_Descriptor *)dcfg);
49
518
        }
50
17.0k
        gf_isom_close(movie);
51
17.0k
    }
52
24.0k
    unlink(filename);
53
24.0k
    return 0;
54
24.0k
}