inception = ksr->start;
isc_lex_create(isc_g_mctx, KSR_LINESIZE, &lex);
memset(specials, 0, sizeof(specials));
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
* Set up to lex DNS master file.
*/
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
}
/* following code was copied from named-rrchecker */
-isc_lexspecials_t specials = { [0] = 1, ['('] = 1, [')'] = 1, ['"'] = 1 };
+isc_lexspecials_t specials = { ['('] = 1, [')'] = 1, ['"'] = 1 };
int
LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
isc_lex_create(mctx, 64, &lex);
memset(specials, 0, sizeof(specials));
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
isc_lex_create(mctx, 1500, &lex);
memset(specials, 0, sizeof(specials));
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
* in lib/dns/tests/dnstest.c.
*/
memset(specials, 0, sizeof(specials));
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
isc_lex_create(mctx, TOKENSIZ, &lex);
memset(specials, 0, sizeof(specials));
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
isc_lex_setspecials(isc_lex_t *lex, isc_lexspecials_t specials);
/*!<
* The characters in 'specials' are returned as tokens. Along with
- * whitespace, they delimit strings and numbers.
+ * whitespace and NUL, they delimit strings and numbers.
*
* Note:
*\li Comment processing takes precedence over special character
lex->last_was_eol = false;
no_comments = true;
state = lexstate_qstring;
+ } else if (c == '\0') {
+ tokenp->type = isc_tokentype_unknown;
+ tokenp->value.as_char = c;
+ done = true;
} else if (lex->specials[c]) {
lex->last_was_eol = false;
if ((c == '(' || c == ')') &&
case lexstate_number:
if (c == EOF || !isdigit((unsigned char)c)) {
if (c == ' ' || c == '\t' || c == '\r' ||
- c == '\n' || c == EOF || lex->specials[c])
+ c == '\n' || c == '\0' || c == EOF ||
+ lex->specials[c])
{
int base;
if ((options & ISC_LEXOPT_OCTAL) != 0) {
* EOF needs to be checked before lex->specials[c]
* as lex->specials[EOF] is not a good idea.
*/
- if (c == '\r' || c == '\n' || c == EOF ||
+ if (c == '\r' || c == '\n' || c == EOF || c == '\0' ||
(!escaped &&
(c == ' ' || c == '\t' || lex->specials[c])))
{
pctx->buf_name = NULL;
memset(specials, 0, sizeof(specials));
- specials[0] = 1;
specials['{'] = 1;
specials['}'] = 1;
specials[';'] = 1;
/* Create a lexer as one is required by dns_rdata_fromtext(). */
isc_lex_create(isc_g_mctx, 64, &lex);
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;
* delimiters while reading the source string. These should match
* specials from lib/dns/master.c.
*/
- specials[0] = 1;
specials['('] = 1;
specials[')'] = 1;
specials['"'] = 1;