Coverage Report

Created: 2025-11-16 06:41

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/leptonica/prog/fuzzing/pix4_fuzzer.cc
Line
Count
Source
1
#include "leptfuzz.h"
2
3
extern "C" int
4
LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
5
1.67k
{
6
1.67k
    leptSetStdNullHandler();
7
8
1.67k
    PIX *pixs;
9
1.67k
    BOX *box;
10
11
1.67k
    pixs = pixReadMemSpix(data, size);
12
1.67k
    if(pixs==NULL) return 0;
13
14
1.05k
    PIX *pix1, *pix2, *pix3, *pix4, *pix5, *pix6;
15
1.05k
    NUMA *na1, *na2, *na3, *na4, *na5, *na6;
16
1.05k
    NUMAA *naa1;
17
18
1.05k
    pix1 = pixConvertTo8(pixs, FALSE);
19
1.05k
    box = boxCreate(120, 30, 200, 200);
20
1.05k
    na1 = pixGetGrayHistogramInRect(pix1, box, 1);
21
1.05k
    numaDestroy(&na1);
22
1.05k
    boxDestroy(&box);
23
1.05k
    pixDestroy(&pix1);
24
25
1.05k
    naa1 = pixGetGrayHistogramTiled(pixs, 1, 1, 1);
26
1.05k
    numaaDestroy(&naa1);
27
28
1.05k
    pix1 = pixConvertTo8(pixs, FALSE);
29
1.05k
    na1 = pixGetCmapHistogramMasked(pix1, NULL, 1, 1, 1);
30
1.05k
    numaDestroy(&na1);
31
1.05k
    pixDestroy(&pix1);
32
33
1.05k
    pix1 = pixConvertTo8(pixs, FALSE);
34
1.05k
    box = boxCreate(120, 30, 200, 200);
35
1.05k
    na1 = pixGetCmapHistogramInRect(pix1, box, 1);
36
1.05k
    numaDestroy(&na1);
37
1.05k
    boxDestroy(&box);
38
1.05k
    pixDestroy(&pix1);
39
40
1.05k
    l_int32 ncolors;
41
1.05k
    pixCountRGBColors(pixs, 1, &ncolors);
42
43
1.05k
    l_uint32  pval;
44
1.05k
    pix1 = pixConvertTo8(pixs, FALSE);
45
1.05k
    pixGetPixelAverage(pix1, NULL, 10, 10, 1, &pval);
46
1.05k
    pixDestroy(&pix1);
47
48
1.05k
    pix1 = pixConvertTo8(pixs, FALSE);
49
1.05k
    l_uint32  pval2;
50
1.05k
    pixGetPixelStats(pix1, 1, L_STANDARD_DEVIATION, &pval2);
51
1.05k
    pixDestroy(&pix1);
52
53
1.05k
    pix1 = pixConvertTo8(pixs, FALSE);
54
1.05k
    if(pix1!=NULL){
55
1.05k
        pix2 = pixConvert8To32(pix1);
56
1.05k
        pixGetAverageTiledRGB(pix2, 2, 2, L_MEAN_ABSVAL, &pix3, &pix4, &pix5);
57
1.05k
        pixDestroy(&pix1);
58
1.05k
        pixDestroy(&pix2);
59
1.05k
        pixDestroy(&pix3);
60
1.05k
        pixDestroy(&pix4);
61
1.05k
        pixDestroy(&pix5);
62
1.05k
    }
63
64
1.05k
    pixRowStats(pixs, NULL, &na1, &na2, &na3, &na4, &na5, &na6);
65
1.05k
    numaDestroy(&na1);
66
1.05k
    numaDestroy(&na2);
67
1.05k
    numaDestroy(&na3);
68
1.05k
    numaDestroy(&na4);
69
1.05k
    numaDestroy(&na5);
70
1.05k
    numaDestroy(&na6);
71
72
1.05k
    pixColumnStats(pixs, NULL, &na1, &na2, &na3, &na4, &na5, &na6);
73
1.05k
    numaDestroy(&na1);
74
1.05k
    numaDestroy(&na2);
75
1.05k
    numaDestroy(&na3);
76
1.05k
    numaDestroy(&na4);
77
1.05k
    numaDestroy(&na5);
78
1.05k
    numaDestroy(&na6);
79
80
1.05k
    static const l_int32  nbins = 10;
81
1.05k
    l_int32     minval, maxval;
82
1.05k
    l_uint32    *gau32;
83
1.05k
    pix1 = pixScaleBySampling(pixs, 0.2, 0.2);
84
1.05k
    pixGetBinnedComponentRange(pix1, nbins, 2, L_SELECT_GREEN,
85
1.05k
                                   &minval, &maxval, &gau32, 0);
86
1.05k
    pixDestroy(&pix1);
87
1.05k
    lept_free(gau32);
88
89
1.05k
    PIX *pixd = pixSeedspread(pixs, 4);
90
1.05k
    PIX *pixc = pixConvertTo32(pixd);
91
1.05k
    PIX *pixr = pixRankBinByStrip(pixc, L_SCAN_HORIZONTAL, 1,
92
1.05k
              10, L_SELECT_MAX);
93
1.05k
    pixDestroy(&pixd);
94
1.05k
    pixDestroy(&pixc);
95
1.05k
    pixDestroy(&pixr);
96
97
1.05k
    PIXA *pixa = pixaReadMem(data, size);
98
1.05k
    pix1 = pixaGetAlignedStats(pixa, L_MEAN_ABSVAL, 2, 2);
99
1.05k
    pixaDestroy(&pixa);
100
1.05k
    pixDestroy(&pix1);
101
102
1.05k
    l_int32 thresh, fgval, bgval;
103
1.05k
    pix1 = pixConvertTo8(pixs, 0);
104
1.05k
    pixSplitDistributionFgBg(pix1, 1.5, 1, &thresh, &fgval, &bgval, &pix2);
105
1.05k
    pixDestroy(&pix1);
106
1.05k
    pixDestroy(&pix2);
107
1.05k
    pixDestroy(&pixs);
108
1.05k
    return 0;
109
1.67k
}