utf8proc

A clean C library for processing UTF-8 Unicode data
git clone https://git.sinitax.com/juliastrings/utf8proc
Log | Files | Refs | README | LICENSE | sfeed.txt

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:
Mtest/fuzzer.c | 11++++++++++-
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);