mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-02 15:45:25 +00:00
3971. [bug] Reduce the cascasding failures due to a bad $TTL line
in named-checkconf / named-checkzone. [RT #37138]
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
|||||||
|
3971. [bug] Reduce the cascasding failures due to a bad $TTL line
|
||||||
|
in named-checkconf / named-checkzone. [RT #37138]
|
||||||
|
|
||||||
3970. [contrib] Fixed a use after free bug in the SDB LDAP driver.
|
3970. [contrib] Fixed a use after free bug in the SDB LDAP driver.
|
||||||
[RT #37237]
|
[RT #37237]
|
||||||
|
|
||||||
|
23
bin/tests/system/checkzone/zones/badttl.db
Normal file
23
bin/tests/system/checkzone/zones/badttl.db
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
; Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
|
||||||
|
;
|
||||||
|
; Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
; purpose with or without fee is hereby granted, provided that the above
|
||||||
|
; copyright notice and this permission notice appear in all copies.
|
||||||
|
;
|
||||||
|
; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||||
|
; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
; PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
$TTL
|
||||||
|
@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
|
||||||
|
NS ns
|
||||||
|
ns A 192.0.2.1
|
||||||
|
|
||||||
|
ns-and-dname NS ns.ns-and-dname
|
||||||
|
DNAME example.com.
|
||||||
|
ns.ns-and-dname A 203.178.141.207
|
@@ -221,7 +221,7 @@ task_send(dns_loadctx_t *lctx);
|
|||||||
static void
|
static void
|
||||||
loadctx_destroy(dns_loadctx_t *lctx);
|
loadctx_destroy(dns_loadctx_t *lctx);
|
||||||
|
|
||||||
#define GETTOKEN(lexer, options, token, eol) \
|
#define GETTOKENERR(lexer, options, token, eol, err) \
|
||||||
do { \
|
do { \
|
||||||
result = gettoken(lexer, options, token, eol, callbacks); \
|
result = gettoken(lexer, options, token, eol, callbacks); \
|
||||||
switch (result) { \
|
switch (result) { \
|
||||||
@@ -234,6 +234,7 @@ loadctx_destroy(dns_loadctx_t *lctx);
|
|||||||
SETRESULT(lctx, result); \
|
SETRESULT(lctx, result); \
|
||||||
LOGIT(result); \
|
LOGIT(result); \
|
||||||
read_till_eol = ISC_TRUE; \
|
read_till_eol = ISC_TRUE; \
|
||||||
|
err \
|
||||||
goto next_line; \
|
goto next_line; \
|
||||||
} else \
|
} else \
|
||||||
goto log_and_cleanup; \
|
goto log_and_cleanup; \
|
||||||
@@ -249,6 +250,8 @@ loadctx_destroy(dns_loadctx_t *lctx);
|
|||||||
goto log_and_cleanup; \
|
goto log_and_cleanup; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
#define GETTOKEN(lexer, options, token, eol) \
|
||||||
|
GETTOKENERR(lexer, options, token, eol, )
|
||||||
|
|
||||||
#define COMMITALL \
|
#define COMMITALL \
|
||||||
do { \
|
do { \
|
||||||
@@ -389,13 +392,19 @@ gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *token,
|
|||||||
if (eol != ISC_TRUE)
|
if (eol != ISC_TRUE)
|
||||||
if (token->type == isc_tokentype_eol ||
|
if (token->type == isc_tokentype_eol ||
|
||||||
token->type == isc_tokentype_eof) {
|
token->type == isc_tokentype_eof) {
|
||||||
|
unsigned long int line;
|
||||||
|
const char *what;
|
||||||
|
const char *file;
|
||||||
|
file = isc_lex_getsourcename(lex);
|
||||||
|
line = isc_lex_getsourceline(lex);
|
||||||
|
if (token->type == isc_tokentype_eol) {
|
||||||
|
line--;
|
||||||
|
what = "line";
|
||||||
|
} else
|
||||||
|
what = "file";
|
||||||
(*callbacks->error)(callbacks,
|
(*callbacks->error)(callbacks,
|
||||||
"dns_master_load: %s:%lu: unexpected end of %s",
|
"dns_master_load: %s:%lu: unexpected end of %s",
|
||||||
isc_lex_getsourcename(lex),
|
file, line, what);
|
||||||
isc_lex_getsourceline(lex),
|
|
||||||
(token->type ==
|
|
||||||
isc_tokentype_eol) ?
|
|
||||||
"line" : "file");
|
|
||||||
return (ISC_R_UNEXPECTEDEND);
|
return (ISC_R_UNEXPECTEDEND);
|
||||||
}
|
}
|
||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
@@ -1152,7 +1161,9 @@ load_text(dns_loadctx_t *lctx) {
|
|||||||
finish_origin = ISC_TRUE;
|
finish_origin = ISC_TRUE;
|
||||||
} else if (strcasecmp(DNS_AS_STR(token),
|
} else if (strcasecmp(DNS_AS_STR(token),
|
||||||
"$TTL") == 0) {
|
"$TTL") == 0) {
|
||||||
GETTOKEN(lctx->lex, 0, &token, ISC_FALSE);
|
GETTOKENERR(lctx->lex, 0, &token, ISC_FALSE,
|
||||||
|
lctx->ttl = 0;
|
||||||
|
lctx->default_ttl_known = ISC_TRUE;);
|
||||||
result =
|
result =
|
||||||
dns_ttl_fromtext(&token.value.as_textregion,
|
dns_ttl_fromtext(&token.value.as_textregion,
|
||||||
&lctx->ttl);
|
&lctx->ttl);
|
||||||
|
Reference in New Issue
Block a user