summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDavid Korczynski <david@adalogics.com>2023-07-24 05:42:39 -0700
committerEmanuele Torre <torreemanuele6@gmail.com>2023-07-24 15:45:12 +0200
commit97c6d2848c98e07f8ed04c2c3bf9730a180889a9 (patch)
tree865263b91b3c19431ad9bc7d8583d929446e2c50 /tests
parent8a4f246876ebfec5807c69d4c378d0d161a4b029 (diff)
Add fuzzer targeting load_file
Signed-off-by: David Korczynski <david@adalogics.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/jq_fuzz_load_file.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/jq_fuzz_load_file.c b/tests/jq_fuzz_load_file.c
new file mode 100644
index 00000000..e362d028
--- /dev/null
+++ b/tests/jq_fuzz_load_file.c
@@ -0,0 +1,27 @@
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "jv.h"
+
+int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) {
+ // Create file with fuzzer data
+ char filename[256];
+ sprintf(filename, "/tmp/libfuzzer.%d", getpid());
+ FILE *fp = fopen(filename, "wb");
+ if (!fp) {
+ return 0;
+ }
+ fwrite(data, size, 1, fp);
+ fclose(fp);
+
+ // Fuzz the two version of jv_load_file
+ jv data1 = jv_load_file(filename, 1);
+ jv_free(data1);
+ jv data2 = jv_load_file(filename, 0);
+ jv_free(data2);
+
+ // Clean up fuzz file
+ unlink(filename);
+
+ return 0;
+}