3780. [bug] $GENERATE handled negative numbers incorrectly.
[RT #25528]
+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]
--- /dev/null
+; 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.$
<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>
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;
}
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);