pixa_recog_fuzzer.cc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "leptfuzz.h"
  2. #include <sys/types.h>
  3. #include <unistd.h>
  4. extern "C" int
  5. LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  6. {
  7. if(size<10) return 0;
  8. leptSetStdNullHandler();
  9. char filename[256];
  10. sprintf(filename, "/tmp/libfuzzer.pa");
  11. FILE *fp = fopen(filename, "wb");
  12. if (!fp) return 0;
  13. fwrite(data, size, 1, fp);
  14. fclose(fp);
  15. PIXA *pixa1, *pixa2, *pixa3, *pixa4, *pixa5;
  16. L_RECOG *recog1, *recog2;
  17. PIX *pix1, *pix2, *pix3, *pix4;
  18. pixa1 = pixaRead(filename);
  19. recog1 = recogCreateFromPixa(pixa1, 0, 40, 1, 128, 1);
  20. pixa2 = recogTrainFromBoot(recog1, pixa1, 0.75, 128, 1);
  21. pixa3 = pixaRemoveOutliers1(pixa1, 0.8, 4, 3, &pix1, &pix2);
  22. pixa4 = pixaRemoveOutliers2(pixa1, 0.8, 4, &pix3, &pix4);
  23. recog2 = recogCreateFromPixa(pixa1, 4, 40, 1, 128, 1);
  24. recogIdentifyMultiple(recog2, pix2, 0, 0, NULL, &pixa5, NULL, 1);
  25. pixDestroy(&pix1);
  26. pixDestroy(&pix2);
  27. pixDestroy(&pix3);
  28. pixDestroy(&pix4);
  29. recogDestroy(&recog1);
  30. recogDestroy(&recog2);
  31. pixaDestroy(&pixa1);
  32. pixaDestroy(&pixa2);
  33. pixaDestroy(&pixa3);
  34. pixaDestroy(&pixa4);
  35. pixaDestroy(&pixa5);
  36. unlink(filename);
  37. return 0;
  38. }