/src/gpac/testsuite/oss-fuzzers/fuzz_probe_analyze.c
Line | Count | Source |
1 | | #include <stdio.h> |
2 | | #include <unistd.h> |
3 | | |
4 | | #include <gpac/filters.h> |
5 | | #include <gpac/constants.h> |
6 | | |
7 | | /* |
8 | | ** Reproducer command-line: |
9 | | ** gpac -p=0 -i <poc> inspect:deep:analyze=full |
10 | | */ |
11 | | |
12 | | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) |
13 | 1.51k | { |
14 | | // prevent blocking on fread(stdin) |
15 | 1.51k | int devnull = open("/dev/null", O_RDONLY); |
16 | 1.51k | if (devnull >= 0) { |
17 | 1.51k | dup2(devnull, STDIN_FILENO); |
18 | 1.51k | close(devnull); |
19 | 1.51k | } |
20 | 1.51k | char filename[256]; |
21 | 1.51k | GF_Err e; |
22 | 1.51k | sprintf(filename, "/tmp/libfuzzer.%d", getpid()); |
23 | | |
24 | 1.51k | FILE *fp = fopen(filename, "wb"); |
25 | 1.51k | if (!fp) return 0; |
26 | 1.51k | fwrite(data, size, 1, fp); |
27 | 1.51k | fclose(fp); |
28 | | |
29 | 1.51k | gf_log_set_tool_level(GF_LOG_RTI, GF_LOG_DEBUG); |
30 | 1.51k | GF_FilterSession *fs = gf_fs_new_defaults(0); |
31 | 1.51k | GF_Filter *src = gf_fs_load_source(fs, filename, NULL, NULL, &e); |
32 | 1.51k | GF_Filter *insp = gf_fs_load_filter(fs, "inspect:deep:analyze=bs", &e); |
33 | 1.51k | gf_fs_run(fs); |
34 | 1.51k | gf_fs_del(fs); |
35 | | |
36 | 1.51k | unlink(filename); |
37 | 1.51k | return 0; |
38 | 1.51k | } |