summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'leptonica/prog/fuzzing/fpix2_fuzzer.cc')
-rw-r--r--leptonica/prog/fuzzing/fpix2_fuzzer.cc111
1 files changed, 111 insertions, 0 deletions
diff --git a/leptonica/prog/fuzzing/fpix2_fuzzer.cc b/leptonica/prog/fuzzing/fpix2_fuzzer.cc
new file mode 100644
index 00000000..e666c589
--- /dev/null
+++ b/leptonica/prog/fuzzing/fpix2_fuzzer.cc
@@ -0,0 +1,111 @@
+#include "leptfuzz.h"
+
+//static void MakePtas(l_int32 i, PTA **pptas, PTA **pptad);
+
+extern "C" int
+LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ if(size<3) return 0;
+
+ leptSetStdNullHandler();
+
+ PIX *tmp_pixs = pixReadMemSpix(data, size);
+ if(tmp_pixs == NULL) return 0;
+
+ DPIX *dpix_payload = pixConvertToDPix(tmp_pixs, 1);
+ if(dpix_payload == NULL) {
+ pixDestroy(&tmp_pixs);
+ return 0;
+ }
+
+ FPIX *fpix_payload = dpixConvertToFPix(dpix_payload);
+ if(fpix_payload == NULL) {
+ pixDestroy(&tmp_pixs);
+ dpixDestroy(&dpix_payload);
+ return 0;
+ }
+
+ DPIX *dpix_copy1 = dpixCopy(dpix_payload);
+ dpixAddMultConstant(dpix_copy1, 1.0, 1.2);
+ dpixDestroy(&dpix_copy1);
+
+ DPIX *dpix_copy2 = dpixCopy(dpix_payload);
+ FPIX *fpixs1 = dpixConvertToFPix(dpix_copy2);
+ fpixDestroy(&fpixs1);
+ dpixDestroy(&dpix_copy2);
+
+ DPIX *dpix_copy3 = dpixCopy(dpix_payload);
+ PIX *pix1 = dpixConvertToPix(dpix_copy3, 8, L_CLIP_TO_ZERO, 0);
+ pixDestroy(&pix1);
+ dpixDestroy(&dpix_copy3);
+
+ l_float64 l_f1;
+ l_int32 l_i1;
+ l_int32 l_i2;
+ DPIX *dpix_copy4 = dpixCopy(dpix_payload);
+ dpixGetMax(dpix_copy4, &l_f1, &l_i1, &l_i2);
+ dpixDestroy(&dpix_copy4);
+
+ l_float64 l_f2;
+ l_int32 l_i3;
+ l_int32 l_i4;
+ DPIX *dpix_copy5 = dpixCopy(dpix_payload);
+ dpixGetMin(dpix_copy5, &l_f2, &l_i3, &l_i4);
+ dpixDestroy(&dpix_copy5);
+
+ DPIX *dpix1 = dpixCreate(300, 300);
+ DPIX *dpix2 = dpixCreate(300, 300);
+ DPIX *dpix_copy6 = dpixCopy(dpix_payload);
+ dpixLinearCombination(dpix_copy6, dpix_copy6, dpix2, 1.1, 1.2);
+ dpixDestroy(&dpix1);
+ dpixDestroy(&dpix2);
+ dpixDestroy(&dpix_copy6);
+
+ DPIX *dpix_copy7 = dpixCopy(dpix_payload);
+ DPIX *dpix3 = dpixScaleByInteger(dpix_copy7, 1);
+ dpixDestroy(&dpix3);
+ dpixDestroy(&dpix_copy7);
+
+ DPIX *dpix_copy8 = dpixCopy(dpix_payload);
+ dpixSetAllArbitrary(dpix_copy8, 1.1);
+ dpixDestroy(&dpix_copy8);
+
+ FPIX *fpix_copy1 = fpixCopy(fpix_payload);
+ FPIX *fpix2 = fpixAddContinuedBorder(fpix_copy1, 1, 1, 1, 1);
+ fpixDestroy(&fpix_copy1);
+ fpixDestroy(&fpix2);
+
+ PTA *pta1 = ptaCreate(0);
+ PTA *pta2 = ptaCreate(0);
+ FPIX *fpix_copy92 = fpixCopy(fpix_payload);
+ FPIX *fpix3 = fpixAffinePta(fpix_copy92, pta1, pta2, 1, 0);
+ fpixDestroy(&fpix3);
+ fpixDestroy(&fpix_copy92);
+ ptaDestroy(&pta1);
+ ptaDestroy(&pta2);
+
+ FPIX *fpix_copy2 = fpixCopy(fpix_payload);
+ DPIX *dpix_return1 = fpixConvertToDPix(fpix_copy2);
+ fpixDestroy(&fpix_copy2);
+ dpixDestroy(&dpix_return1);
+
+ FPIX *fpix5 = fpixCreate(300, 300);
+ FPIX *fpix_copy3 = fpixCopy(fpix_payload);
+ fpixLinearCombination(fpix_copy3, fpix_copy3, fpix5, 1.1, 1.1);
+ fpixDestroy(&fpix_copy3);
+ fpixDestroy(&fpix5);
+
+ PTA *ptas, *ptad;
+ ptas = ptaCreate(0);
+ ptad = ptaCreate(0);
+ FPIX *fpix_copy4 = fpixCopy(fpix_payload);
+ FPIX *fpix_return2 = fpixProjectivePta(fpix_copy4, ptas, ptad, 200, 0.0);
+ fpixDestroy(&fpix_return2);
+ fpixDestroy(&fpix_copy4);
+ ptaDestroy(&ptas);
+ ptaDestroy(&ptad);
+
+ pixDestroy(&tmp_pixs);
+ dpixDestroy(&dpix_payload);
+ fpixDestroy(&fpix_payload);
+ return 0;
+}