Coverage Report

Created: 2026-05-16 07:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
}