mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 01:10:00 -04:00
[master] fix negative numbers in $GENERATE
3780. [bug] $GENERATE handled negative numbers incorrectly. [RT #25528]
This commit is contained in:
parent
83bb42c635
commit
7b46a4aa41
4 changed files with 33 additions and 5 deletions
3
CHANGES
3
CHANGES
|
|
@ -1,3 +1,6 @@
|
|||
3780. [bug] $GENERATE handled negative numbers incorrectly.
|
||||
[RT #25528]
|
||||
|
||||
3779. [cleanup] Clarify the error message when using an option
|
||||
that was not enabled at compile time. [RT #35504]
|
||||
|
||||
|
|
|
|||
22
bin/tests/system/checkzone/zones/bad2.db
Normal file
22
bin/tests/system/checkzone/zones/bad2.db
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
; 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 600
|
||||
@ SOA ns hostmaster 2011012708 3600 1200 604800 1200
|
||||
NS ns
|
||||
ns A 192.0.2.1
|
||||
|
||||
; The following GENERATE directive contains two dashes in the range
|
||||
; which is a syntax error.
|
||||
$GENERATE 9--10 host$ 3600 A 192.0.2.$
|
||||
|
|
@ -14205,8 +14205,9 @@ HOST-127.EXAMPLE. MX 0 .
|
|||
<para>
|
||||
This can be one of two forms: start-stop
|
||||
or start-stop/step. If the first form is used, then step
|
||||
is set to
|
||||
1. All of start, stop and step must be positive.
|
||||
is set to 1. start, stop and step must be positive
|
||||
integers between 0 and (2^31)-1. start must not be
|
||||
larger than stop.
|
||||
</para>
|
||||
</entry>
|
||||
</row>
|
||||
|
|
|
|||
|
|
@ -806,7 +806,7 @@ generate(dns_loadctx_t *lctx, char *range, char *lhs, char *gtype, char *rhs,
|
|||
isc_buffer_t target;
|
||||
isc_result_t result;
|
||||
isc_textregion_t r;
|
||||
unsigned int start, stop, step, i;
|
||||
int start, stop, step, i;
|
||||
dns_incctx_t *ictx;
|
||||
|
||||
ictx = lctx->inc;
|
||||
|
|
@ -824,8 +824,10 @@ generate(dns_loadctx_t *lctx, char *range, char *lhs, char *gtype, char *rhs,
|
|||
}
|
||||
isc_buffer_init(&target, target_mem, target_size);
|
||||
|
||||
n = sscanf(range, "%u-%u/%u", &start, &stop, &step);
|
||||
if (n < 2 || stop < start) {
|
||||
n = sscanf(range, "%d-%d/%d", &start, &stop, &step);
|
||||
if ((n < 2) || (start < 0) || (stop < 0) || (step < 0) ||
|
||||
(stop < start))
|
||||
{
|
||||
(*callbacks->error)(callbacks,
|
||||
"%s: %s:%lu: invalid range '%s'",
|
||||
"$GENERATE", source, line, range);
|
||||
|
|
|
|||
Loading…
Reference in a new issue