]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
fixup! Consistently set specials[0] to 1 marka-set-specials-zero 11669/head
authorEvan Hunt <each@isc.org>
Thu, 9 Apr 2026 01:34:56 +0000 (18:34 -0700)
committerEvan Hunt <each@isc.org>
Thu, 9 Apr 2026 01:45:44 +0000 (18:45 -0700)
12 files changed:
bin/dnssec/dnssec-ksr.c
bin/tools/named-rrchecker.c
fuzz/dns_rdata_fromtext.c
fuzz/dns_rdata_fromwire_text.c
lib/dns/dst_api.c
lib/dns/master.c
lib/dns/skr.c
lib/isc/include/isc/lex.h
lib/isc/lex.c
lib/isccfg/parser.c
tests/dns/skr_test.c
tests/libtest/dns.c

index 5088bb7d7e490af68499fbe7eff512e1d6e56bb4..d2a387290906557accb857b622a348415803c9c1 100644 (file)
@@ -1150,7 +1150,6 @@ sign(ksr_ctx_t *ksr) {
        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;
index 28bbea39ab58c8af34b80ec52291385d02001cf2..99a0ba4dface5bef3d21453ac559aeec0411b45d 100644 (file)
@@ -172,7 +172,6 @@ main(int argc, char *argv[]) {
         * Set up to lex DNS master file.
         */
 
-       specials[0] = 1;
        specials['('] = 1;
        specials[')'] = 1;
        specials['"'] = 1;
index 68c6894a30629d9cd5e93cde3e608f266a592967..a8ee8949b14be4be645f706673ba623fe30f6a4c 100644 (file)
@@ -41,7 +41,7 @@ LLVMFuzzerInitialize(int *argc, char ***argv) {
 }
 
 /* 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) {
index 0e0f2447664ab4a568074710723b2b2d98873cdb..98ff4d46209251cf9c5cab43300e2796ac4fc2b7 100644 (file)
@@ -49,7 +49,6 @@ LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
        isc_lex_create(mctx, 64, &lex);
 
        memset(specials, 0, sizeof(specials));
-       specials[0] = 1;
        specials['('] = 1;
        specials[')'] = 1;
        specials['"'] = 1;
index 87480529b065b03a3ddd1925e1f5e4dad732121d..b8b673043b27ff9d4fe8eadec1458bac821abf9c 100644 (file)
@@ -1490,7 +1490,6 @@ dst_key_read_public(const char *filename, int type, isc_mem_t *mctx,
        isc_lex_create(mctx, 1500, &lex);
 
        memset(specials, 0, sizeof(specials));
-       specials[0] = 1;
        specials['('] = 1;
        specials[')'] = 1;
        specials['"'] = 1;
index 4974999eeb66fe6541d330f780163068b9db5a80..0ae221c94e50e4c90b7799086ddf28a0132e2f6f 100644 (file)
@@ -533,7 +533,6 @@ loadctx_create(dns_masterformat_t format, isc_mem_t *mctx, unsigned int options,
                 * in lib/dns/tests/dnstest.c.
                 */
                memset(specials, 0, sizeof(specials));
-               specials[0] = 1;
                specials['('] = 1;
                specials[')'] = 1;
                specials['"'] = 1;
index 0b3b043513239ab0a0337b48ba8ab067c71c499d..a54b843fc272849d3ef5166b836762932d3d8f4c 100644 (file)
@@ -225,7 +225,6 @@ dns_skr_read(isc_mem_t *mctx, const char *filename, dns_name_t *origin,
 
        isc_lex_create(mctx, TOKENSIZ, &lex);
        memset(specials, 0, sizeof(specials));
-       specials[0] = 1;
        specials['('] = 1;
        specials[')'] = 1;
        specials['"'] = 1;
index a4faf25667a8a17cd108d3fbe054195db74b22b5..684d8b416df942be487cbc20b9b9e1e0c118a9ee 100644 (file)
@@ -201,7 +201,7 @@ void
 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
index 588ffa6bf1ef525ec0c9ba8e62806b04a0fb3949..1019c112c8ce2e1d12a2c23e564183ba98701de5 100644 (file)
@@ -540,6 +540,10 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) {
                                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 == ')') &&
@@ -607,7 +611,8 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) {
                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) {
@@ -699,7 +704,7 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) {
                         * 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])))
                        {
index 188919f14f76f8fa2019e07a09b7f91e50f4ecb1..83722cb858f4827ead7c5952086fdcd076b6c626 100644 (file)
@@ -698,7 +698,6 @@ parser_create(cfg_parser_t **ret) {
        pctx->buf_name = NULL;
 
        memset(specials, 0, sizeof(specials));
-       specials[0] = 1;
        specials['{'] = 1;
        specials['}'] = 1;
        specials[';'] = 1;
index 55b533dc520f15bc77fd60f7378f3cceeaa985e4..602f0df067595b6c65a83eda86b68d60b59176cc 100644 (file)
@@ -168,7 +168,6 @@ write_record(FILE *fp, dns_rdatatype_t rdtype, const char *rdatastr,
 
        /* 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;
index 9b6b8dc655dcfab2e9ff07a93b455f97e9ab5d56..e98b0e15b18714281124bae0214ccdd1e62bcae9 100644 (file)
@@ -350,7 +350,6 @@ dns_test_rdatafromstring(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
         * delimiters while reading the source string.  These should match
         * specials from lib/dns/master.c.
         */
-       specials[0] = 1;
        specials['('] = 1;
        specials[')'] = 1;
        specials['"'] = 1;