3283. [bug] Raw zones with with more than 512 records in a RRset
failed to load. [RT #27863]
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
||||
3283. [bug] Raw zones with with more than 512 records in a RRset
|
||||
failed to load. [RT #27863]
|
||||
|
||||
3282. [bug] Restrict the TTL of NS RRset to no more than that
|
||||
of the old NS RRset when replacing it. [RT #27792]
|
||||
|
||||
|
||||
@@ -14,15 +14,18 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: clean.sh,v 1.10 2011/12/22 07:32:40 each Exp $
|
||||
# $Id: clean.sh,v 1.11 2012/02/13 23:46:23 marka Exp $
|
||||
|
||||
rm -f named-compilezone
|
||||
rm -f ns1/example.db.raw*
|
||||
rm -f ns1/example.db.compat
|
||||
rm -f ns1/example.db.serial.raw
|
||||
rm -f ns2/example.db
|
||||
rm -f ns1/large.db ns1/large.db.raw
|
||||
rm -f dig.out.*
|
||||
rm -f dig.out
|
||||
rm -f */named.memstats
|
||||
rm -f ns2/example.db
|
||||
rm -f ns2/transfer.db.*
|
||||
rm -f ns2/formerly-text.db
|
||||
rm -f ns2/db-*
|
||||
rm -f ns2/large.bk
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: compile.sh,v 1.9 2011/12/22 07:32:40 each Exp $
|
||||
# $Id: compile.sh,v 1.10 2012/02/13 23:46:24 marka Exp $
|
||||
|
||||
../named-compilezone -D -F raw -o example.db.raw example \
|
||||
example.db > /dev/null 2>&1
|
||||
@@ -22,3 +22,4 @@
|
||||
example.db > /dev/null 2>&1
|
||||
../named-compilezone -D -F raw -L 3333 -o example.db.serial.raw example \
|
||||
example.db > /dev/null 2>&1
|
||||
../named-compilezone -D -F raw -o large.db.raw large large.db > /dev/null 2>&1
|
||||
|
||||
27
bin/tests/system/masterformat/ns1/large.db.in
Normal file
27
bin/tests/system/masterformat/ns1/large.db.in
Normal file
@@ -0,0 +1,27 @@
|
||||
; Copyright (C) 2005, 2007 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.
|
||||
|
||||
; $Id: large.db.in,v 1.2 2012/02/13 23:46:24 marka Exp $
|
||||
|
||||
$TTL 1D
|
||||
|
||||
@ IN SOA ns hostmaster (
|
||||
1
|
||||
3600
|
||||
1800
|
||||
1814400
|
||||
3
|
||||
)
|
||||
NS ns
|
||||
ns A 10.53.0.1
|
||||
@@ -14,7 +14,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: named.conf,v 1.7 2011/12/08 16:07:20 each Exp $ */
|
||||
/* $Id: named.conf,v 1.8 2012/02/13 23:46:24 marka Exp $ */
|
||||
|
||||
// NS1
|
||||
|
||||
@@ -59,3 +59,10 @@ zone "transfer3" {
|
||||
file "example.db";
|
||||
allow-transfer { any; };
|
||||
};
|
||||
|
||||
zone "large" {
|
||||
type master;
|
||||
file "large.db.raw";
|
||||
masterfile-format raw;
|
||||
allow-transfer { any; };
|
||||
};
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: named.conf,v 1.6 2011/10/26 23:46:15 tbox Exp $ */
|
||||
/* $Id: named.conf,v 1.7 2012/02/13 23:46:24 marka Exp $ */
|
||||
|
||||
// NS2
|
||||
|
||||
@@ -53,3 +53,10 @@ zone "transfer3" {
|
||||
masters { 10.53.0.1; };
|
||||
file "formerly-text.db";
|
||||
};
|
||||
|
||||
zone "large" {
|
||||
type slave;
|
||||
masters { 10.53.0.1; };
|
||||
masterfile-format raw;
|
||||
file "large.bk";
|
||||
};
|
||||
|
||||
@@ -12,11 +12,17 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: setup.sh,v 1.9 2011/12/08 16:07:20 each Exp $
|
||||
# $Id: setup.sh,v 1.10 2012/02/13 23:46:23 marka Exp $
|
||||
|
||||
rm -f named-compilezone
|
||||
ln -s $CHECKZONE named-compilezone
|
||||
rm -f ns1/example.db.raw
|
||||
cp ns1/example.db ns2/
|
||||
cp ns2/formerly-text.db.in ns2/formerly-text.db
|
||||
cp ns1/large.db.in ns1/large.db
|
||||
awk 'END {
|
||||
for (i = 0; i < 512; i++ ) { print "a TXT", i; }
|
||||
for (i = 0; i < 1024; i++ ) { print "b TXT", i; }
|
||||
for (i = 0; i < 2000; i++ ) { print "c TXT", i; }
|
||||
}' < /dev/null >> ns1/large.db
|
||||
cd ns1 && sh compile.sh
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: tests.sh,v 1.12 2012/02/01 23:46:51 tbox Exp $
|
||||
# $Id: tests.sh,v 1.13 2012/02/13 23:46:23 marka Exp $
|
||||
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
@@ -88,7 +88,7 @@ status=`expr $status + $ret`
|
||||
echo "I:waiting for transfers to complete"
|
||||
for i in 0 1 2 3 4 5 6 7 8 9
|
||||
do
|
||||
test -f ns2/transfer.db.raw -a -f ns2/transfer.db.txt && break
|
||||
test -f ns2/transfer.db.raw -a -f ns2/transfer.db.txt && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
@@ -116,5 +116,15 @@ done
|
||||
[ $ret -eq 0 ] || echo "I:failed"
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I:checking that large rdatasets loaded"
|
||||
ret=0
|
||||
for a in a b c
|
||||
do
|
||||
$DIG +tcp txt ${a}.large @10.53.0.2 -p 5300 > dig.out
|
||||
grep "status: NOERROR" dig.out > /dev/null || ret=1
|
||||
done
|
||||
[ $ret -eq 0 ] || echo "I:failed"
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo "I:exit status: $status"
|
||||
exit $status
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: master.c,v 1.183 2012/01/31 23:47:32 tbox Exp $ */
|
||||
/* $Id: master.c,v 1.184 2012/02/13 23:46:24 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
@@ -2292,14 +2292,14 @@ load_raw(dns_loadctx_t *lctx) {
|
||||
if (rdcount > rdata_size) {
|
||||
dns_rdata_t *new_rdata = NULL;
|
||||
|
||||
new_rdata = grow_rdata(rdata_size + RDSZ, rdata,
|
||||
new_rdata = grow_rdata(rdcount + RDSZ, rdata,
|
||||
rdata_size, &head,
|
||||
&dummy, mctx);
|
||||
if (new_rdata == NULL) {
|
||||
result = ISC_R_NOMEMORY;
|
||||
goto cleanup;
|
||||
}
|
||||
rdata_size += RDSZ;
|
||||
rdata_size = rdcount + RDSZ;
|
||||
rdata = new_rdata;
|
||||
}
|
||||
|
||||
@@ -2756,6 +2756,7 @@ grow_rdatalist(int new_len, dns_rdatalist_t *old, int old_len,
|
||||
}
|
||||
while ((this = ISC_LIST_HEAD(save)) != NULL) {
|
||||
ISC_LIST_UNLINK(save, this, link);
|
||||
INSIST(rdlcount < new_len);
|
||||
new[rdlcount] = *this;
|
||||
ISC_LIST_APPEND(*current, &new[rdlcount], link);
|
||||
rdlcount++;
|
||||
@@ -2768,6 +2769,7 @@ grow_rdatalist(int new_len, dns_rdatalist_t *old, int old_len,
|
||||
}
|
||||
while ((this = ISC_LIST_HEAD(save)) != NULL) {
|
||||
ISC_LIST_UNLINK(save, this, link);
|
||||
INSIST(rdlcount < new_len);
|
||||
new[rdlcount] = *this;
|
||||
ISC_LIST_APPEND(*glue, &new[rdlcount], link);
|
||||
rdlcount++;
|
||||
@@ -2811,6 +2813,7 @@ grow_rdata(int new_len, dns_rdata_t *old, int old_len,
|
||||
}
|
||||
while ((rdata = ISC_LIST_HEAD(save)) != NULL) {
|
||||
ISC_LIST_UNLINK(save, rdata, link);
|
||||
INSIST(rdcount < new_len);
|
||||
new[rdcount] = *rdata;
|
||||
ISC_LIST_APPEND(this->rdata, &new[rdcount], link);
|
||||
rdcount++;
|
||||
@@ -2830,13 +2833,14 @@ grow_rdata(int new_len, dns_rdata_t *old, int old_len,
|
||||
}
|
||||
while ((rdata = ISC_LIST_HEAD(save)) != NULL) {
|
||||
ISC_LIST_UNLINK(save, rdata, link);
|
||||
INSIST(rdcount < new_len);
|
||||
new[rdcount] = *rdata;
|
||||
ISC_LIST_APPEND(this->rdata, &new[rdcount], link);
|
||||
rdcount++;
|
||||
}
|
||||
this = ISC_LIST_NEXT(this, link);
|
||||
}
|
||||
INSIST(rdcount == old_len);
|
||||
INSIST(rdcount == old_len || rdcount == 0);
|
||||
if (old != NULL)
|
||||
isc_mem_put(mctx, old, old_len * sizeof(*old));
|
||||
return (new);
|
||||
|
||||
Reference in New Issue
Block a user