/src/gpac/testsuite/oss-fuzzers/fuzz_route.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 route://234.0.0.1:1234 inspect:deep -netcap=src=<poc>,nrt |
10 | | */ |
11 | | |
12 | | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) |
13 | 3.19k | { |
14 | 3.19k | char filename[256]; |
15 | 3.19k | char argname[300]; |
16 | 3.19k | GF_Err e; |
17 | 3.19k | sprintf(filename, "/tmp/libfuzzer.%d", getpid()); |
18 | | |
19 | 3.19k | FILE *fp = fopen(filename, "wb"); |
20 | 3.19k | if (!fp) return 0; |
21 | 3.19k | fwrite(data, size, 1, fp); |
22 | 3.19k | fclose(fp); |
23 | | |
24 | 3.19k | gf_sys_init(0, "0"); |
25 | 3.19k | const char *args[2]; |
26 | 3.19k | args[0] = "gpac"; |
27 | 3.19k | sprintf(argname, "-netcap=src=%s,nrt", filename); |
28 | 3.19k | args[1] = argname; |
29 | 3.19k | e = gf_sys_set_args(2, args); |
30 | | |
31 | 3.19k | if (e==GF_OK) { |
32 | 2.76k | const char *url = "route://234.0.0.1:1234/live.mpd"; |
33 | 2.76k | GF_FilterSession *fs = gf_fs_new_defaults(0); |
34 | 2.76k | GF_Filter *src = gf_fs_load_source(fs, url, NULL, NULL, &e); |
35 | 2.76k | GF_Filter *insp = gf_fs_load_filter(fs, "inspect:deep", &e); |
36 | 2.76k | gf_fs_run(fs); |
37 | 2.76k | gf_fs_del(fs); |
38 | 2.76k | } |
39 | | |
40 | 3.19k | gf_sys_close(); |
41 | 3.19k | unlink(filename); |
42 | 3.19k | return 0; |
43 | 3.19k | } |