diff --git a/test/fuzz/CMakeLists.txt b/test/fuzz/CMakeLists.txt index f32bbe91eeab0eede3039d4e52aaa64a5882f650..1900d669ce9569f7d1003e1b76170779c64d18ce 100644 --- a/test/fuzz/CMakeLists.txt +++ b/test/fuzz/CMakeLists.txt @@ -44,7 +44,15 @@ target_link_libraries(swim_proto_member_fuzzer PUBLIC swim fuzzer_config) add_executable(swim_proto_meta_fuzzer swim_proto_meta_fuzzer.c) target_link_libraries(swim_proto_meta_fuzzer PUBLIC swim fuzzer_config) +add_executable(datetime_parse_full_fuzzer datetime_parse_full_fuzzer.c) +target_link_libraries(datetime_parse_full_fuzzer PUBLIC core fuzzer_config) + +add_executable(datetime_strptime_fuzzer datetime_strptime_fuzzer.c) +target_link_libraries(datetime_strptime_fuzzer PUBLIC core fuzzer_config) + set(fuzzing_binaries csv_fuzzer + datetime_parse_full_fuzzer + datetime_strptime_fuzzer http_parser_fuzzer swim_proto_member_fuzzer swim_proto_meta_fuzzer diff --git a/test/fuzz/datetime_parse_full_fuzzer.c b/test/fuzz/datetime_parse_full_fuzzer.c new file mode 100644 index 0000000000000000000000000000000000000000..1cd0a3b173852ed264792b947acd517b09acd374 --- /dev/null +++ b/test/fuzz/datetime_parse_full_fuzzer.c @@ -0,0 +1,19 @@ +#include <stdlib.h> +#include <string.h> +#include "datetime.h" +#include "trivia/util.h" + +int +LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + char *buf = xcalloc(size + 1, sizeof(char)); + if (buf == NULL) + return 0; + memcpy(buf, data, size); + buf[size] = '\0'; + struct datetime date_expected; + datetime_parse_full(&date_expected, buf, size, 0); + free(buf); + + return 0; +} diff --git a/test/fuzz/datetime_strptime_fuzzer.c b/test/fuzz/datetime_strptime_fuzzer.c new file mode 100644 index 0000000000000000000000000000000000000000..bccdf0fdc3f3b9ba9d7d4b1e8a221211ed9196e2 --- /dev/null +++ b/test/fuzz/datetime_strptime_fuzzer.c @@ -0,0 +1,19 @@ +#include <stdlib.h> +#include <string.h> +#include "datetime.h" +#include "trivia/util.h" + +int +LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + char *buf = xcalloc(size + 1, sizeof(char)); + if (buf == NULL) + return 0; + memcpy(buf, data, size); + buf[size] = '\0'; + struct datetime date_expected; + datetime_strptime(&date_expected, buf, "iso8601"); + free(buf); + + return 0; +}