hostap/tests/test-json.c
Jouni Malinen f3e671591e tests: libFuzzer integration for test-json and test-x509
Allow these test tools to be used with libFuzzer in addition to
afl-fuzz.

Signed-off-by: Jouni Malinen <j@w1.fi>
2019-02-25 19:48:49 +02:00

64 lines
1.1 KiB
C

/*
* 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/common.h"
#include "utils/os.h"
#include "utils/json.h"
#include "utils/wpa_debug.h"
void run_test(const char *buf, size_t len)
{
struct json_token *root;
char *txt;
size_t buflen = 10000;
root = json_parse(buf, len);
if (!root) {
wpa_printf(MSG_DEBUG, "JSON parsing failed");
return;
}
txt = os_zalloc(buflen);
if (txt) {
json_print_tree(root, txt, buflen);
wpa_printf(MSG_DEBUG, "%s", txt);
os_free(txt);
}
json_free(root);
}
#ifdef TEST_LIBFUZZER
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
run_test((const char *) data, size);
return 0;
}
#else /* TEST_LIBFUZZER */
int main(int argc, char *argv[])
{
char *buf;
size_t len;
wpa_debug_level = 0;
if (argc < 2)
return -1;
buf = os_readfile(argv[1], &len);
if (!buf)
return -1;
run_test(buf, len);
os_free(buf);
return 0;
}
#endif /* TEST_LIBFUZZER */