tests: JSON parser fuzzer

test-json can be used for fuzz testing the JSON parser implementation in
src/utils/json.c.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2019-02-09 21:38:56 +02:00
parent 62269c8d8d
commit 79fa1b4530
3 changed files with 49 additions and 0 deletions

View file

@ -19,6 +19,7 @@ LIB_OBJS= \
common.o \ common.o \
crc32.o \ crc32.o \
ip_addr.o \ ip_addr.o \
json.o \
radiotap.o \ radiotap.o \
trace.o \ trace.o \
uuid.o \ uuid.o \

View file

@ -61,6 +61,9 @@ test-https: test-https.o $(LIBS)
test-https_server: test-https_server.o $(LIBS) test-https_server: test-https_server.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS) $(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
test-json: test-json.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-list: test-list.o $(LIBS) test-list: test-list.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS) $(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
@ -107,6 +110,7 @@ clean:
$(MAKE) -C ../src clean $(MAKE) -C ../src clean
rm -f $(TESTS) *~ *.o *.d rm -f $(TESTS) *~ *.o *.d
rm -f test-https rm -f test-https
rm -f test-json
rm -f test-tls rm -f test-tls
rm -f test_x509v3_nist.out.* rm -f test_x509v3_nist.out.*
rm -f test_x509v3_nist2.out.* rm -f test_x509v3_nist2.out.*

44
tests/test-json.c Normal file
View file

@ -0,0 +1,44 @@
/*
* JSON parser - test program
* Copyright (c) 2019, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
*/
#include "utils/includes.h"
#include "utils/os.h"
#include "utils/json.h"
int main(int argc, char *argv[])
{
char *buf;
size_t len;
struct json_token *root;
if (argc < 2)
return -1;
buf = os_readfile(argv[1], &len);
if (!buf)
return -1;
root = json_parse(buf, len);
os_free(buf);
if (root) {
size_t buflen = 10000;
buf = os_zalloc(buflen);
if (buf) {
json_print_tree(root, buf, buflen);
printf("%s\n", buf);
os_free(buf);
}
json_free(root);
} else {
printf("JSON parsing failed\n");
}
return 0;
}