commit 63f31c908ef7656415f73d6c178f08181239f74c
parent 39dbf507d72994939a8bee2b706e26440f9bc60c
Author: Randy <randy408@protonmail.com>
Date: Thu, 26 May 2022 14:58:54 +0200
Improve fuzzer code coverage (#239)
* fuzz: test grapheme break functions
* fuzz: cover character lumping
Diffstat:
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/test/fuzzer.c b/test/fuzzer.c
@@ -11,7 +11,7 @@ int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
if(data[size-1] != '\0') return 0;
const uint8_t* ptr = data;
- utf8proc_int32_t c = 0;
+ utf8proc_int32_t c = 0, c_prev = 0, state = 0;
utf8proc_option_t options;
utf8proc_ssize_t ret, bytes = 0;
size_t len = strlen((const char*)data);
@@ -34,6 +34,11 @@ int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
utf8proc_category(c);
utf8proc_category_string(c);
utf8proc_codepoint_valid(c);
+
+ utf8proc_grapheme_break(c_prev, c);
+ utf8proc_grapheme_break_stateful(c_prev, c, &state);
+
+ c_prev = c;
}
utf8proc_int32_t *copy = size >= 4 ? NULL : malloc(size);
@@ -58,6 +63,10 @@ int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
memcpy(copy, data, size);
utf8proc_normalize_utf32(copy, size, options);
+ options = UTF8PROC_LUMP;
+ memcpy(copy, data, size);
+ utf8proc_normalize_utf32(copy, size, options);
+
options = 0;
memcpy(copy, data, size);
utf8proc_normalize_utf32(copy, size, options);