diff --git a/fuzz/isc_lex_getmastertoken.c b/fuzz/isc_lex_getmastertoken.c index 75a2329585..a9beb7d681 100644 --- a/fuzz/isc_lex_getmastertoken.c +++ b/fuzz/isc_lex_getmastertoken.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "fuzz.h" @@ -46,6 +47,20 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { isc_buffer_t buf; isc_result_t result; + isc_tokentype_t expect; + bool eol; + + if (size < sizeof(expect) + sizeof(eol)) { + return (0); + } + + (void)memmove(&expect, data, sizeof(expect)); + data += sizeof(expect); + size -= sizeof(expect); + + (void)memmove(&eol, data, sizeof(eol)); + data += sizeof(eol); + size -= sizeof(eol); isc_buffer_constinit(&buf, data, size); isc_buffer_add(&buf, size); @@ -55,7 +70,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { do { isc_token_t token; - result = isc_lex_gettoken(lex, 0, &token); + result = isc_lex_getmastertoken(lex, &token, expect, eol); } while (result == ISC_R_SUCCESS); return (0); diff --git a/fuzz/isc_lex_getmastertoken.in/named.conf b/fuzz/isc_lex_getmastertoken.in/named.conf index f7d39fdabe..de8ea9c07d 100644 Binary files a/fuzz/isc_lex_getmastertoken.in/named.conf and b/fuzz/isc_lex_getmastertoken.in/named.conf differ diff --git a/fuzz/isc_lex_getmastertoken.in/simple b/fuzz/isc_lex_getmastertoken.in/simple index 105e53a3dc..a5eb98cd6f 100644 Binary files a/fuzz/isc_lex_getmastertoken.in/simple and b/fuzz/isc_lex_getmastertoken.in/simple differ