Coverage Report

Created: 2026-01-09 06:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cups/ossfuzz/fuzz_raster.c
Line
Count
Source
1
/*
2
 * Fuzztest for `cupsRasterReadHeader2`.
3
 *
4
 * Copyright © 2024 by OpenPrinting.
5
 *
6
 * Licensed under Apache License v2.0.  See the file "LICENSE" for more
7
 * information.
8
 */
9
10
#include <cups/raster-private.h>
11
12
/* I'm aware that the maximum size is 20KB.*/
13
5.22k
#define kMinInputLength 2
14
2.60k
#define kMaxInputLength 20480
15
16
void load_res(char *file);
17
18
extern int
19
LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
20
2.61k
{
21
2.61k
    FILE  *fp;
22
2.61k
    char  file_name[256];
23
24
2.61k
    if (size < kMinInputLength || size > kMaxInputLength) {
25
27
      return 0;
26
27
    }
27
28
2.61k
    sprintf(file_name, "/tmp/libfuzzer.%d", getpid());
29
30
2.58k
    fp = fopen(file_name, "w");
31
2.58k
    if (fp == NULL) {
32
0
        return 0;
33
0
    }
34
35
2.58k
    fwrite(data, sizeof(char), size, fp);
36
2.58k
    fclose(fp);
37
38
2.58k
    load_res(file_name);
39
2.58k
    unlink(file_name);
40
41
2.58k
    return 0;
42
2.58k
}
43
44
void load_res(char *file)
45
637
{
46
637
    int                  fd;
47
637
    cups_raster_t        *ras;
48
637
    cups_page_header2_t  header;
49
50
637
    fd = open(file, O_RDONLY);
51
637
    if (fd < 0) {
52
0
        return;
53
0
    }
54
55
637
    ras = cupsRasterOpen(fd, CUPS_RASTER_READ);
56
637
    if(ras == NULL) {
57
227
        close(fd);
58
227
        return;
59
227
    }
60
61
410
    cupsRasterReadHeader2(ras, &header);
62
63
410
    cupsRasterClose(ras);
64
410
    close(fd);
65
410
}