summaryrefslogtreecommitdiff
path: root/graphics/asymptote/tinyexr/test/fuzzer/fuzz.cc
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/tinyexr/test/fuzzer/fuzz.cc')
-rw-r--r--graphics/asymptote/tinyexr/test/fuzzer/fuzz.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/graphics/asymptote/tinyexr/test/fuzzer/fuzz.cc b/graphics/asymptote/tinyexr/test/fuzzer/fuzz.cc
new file mode 100644
index 0000000000..6de8637e34
--- /dev/null
+++ b/graphics/asymptote/tinyexr/test/fuzzer/fuzz.cc
@@ -0,0 +1,29 @@
+#include <stdint.h>
+#include <stddef.h>
+#define TINYEXR_IMPLEMENTATION
+#include "tinyexr.h"
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+ EXRVersion exr_version;
+ EXRImage exr_image;
+ EXRHeader exr_header;
+ int ret = ParseEXRVersionFromMemory(&exr_version, data, size);
+ if (ret != TINYEXR_SUCCESS) {
+ return 0;
+ }
+ InitEXRHeader(&exr_header);
+ ret = ParseEXRHeaderFromMemory(&exr_header, &exr_version, data, size, NULL);
+ if (ret != TINYEXR_SUCCESS) {
+ FreeEXRHeader(&exr_header);
+ return 0;
+ }
+ InitEXRImage(&exr_image);
+ ret = LoadEXRImageFromMemory(&exr_image, &exr_header, data, size, NULL);
+ if (ret != TINYEXR_SUCCESS) {
+ FreeEXRHeader(&exr_header);
+ FreeEXRImage(&exr_image);
+ return 0;
+ }
+ FreeEXRHeader(&exr_header);
+ FreeEXRImage(&exr_image);
+ return 0;
+}