/src/poppler/glib/tests/fuzzing/label_fuzzer.cc
Line | Count | Source |
1 | | #include <stdlib.h> |
2 | | #include <stdint.h> |
3 | | #include <string.h> |
4 | | #include <poppler.h> |
5 | | |
6 | | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) |
7 | 12.5k | { |
8 | 12.5k | GError *err = NULL; |
9 | 12.5k | PopplerDocument *doc; |
10 | 12.5k | PopplerPage *page; |
11 | 12.5k | char *buf; |
12 | 12.5k | int npages; |
13 | | |
14 | 12.5k | doc = poppler_document_new_from_data((char *)data, size, NULL, &err); |
15 | 12.5k | if (doc == NULL) { |
16 | 8.19k | g_error_free(err); |
17 | 8.19k | return 0; |
18 | 8.19k | } |
19 | | |
20 | 4.35k | npages = poppler_document_get_n_pages(doc); |
21 | 4.35k | if (npages < 1) { |
22 | 834 | g_object_unref(doc); |
23 | 834 | return 0; |
24 | 834 | } |
25 | | |
26 | 3.52k | buf = (char *)calloc(size + 1, sizeof(char)); |
27 | 3.52k | memcpy(buf, data, size); |
28 | 3.52k | buf[size] = '\0'; |
29 | | |
30 | 63.5k | for (int n = 0; n < npages; n++) { |
31 | 60.0k | page = poppler_document_get_page_by_label(doc, buf); |
32 | 60.0k | if (!page) { |
33 | 59.1k | continue; |
34 | 59.1k | } |
35 | 830 | g_object_unref(page); |
36 | 830 | } |
37 | 3.52k | free(buf); |
38 | 3.52k | g_object_unref(doc); |
39 | 3.52k | return 0; |
40 | 4.35k | } |