3144. [bug] dns_dbiterator_seek() could trigger an assert when

used with a nonexistent database node. [RT #25358]
This commit is contained in:
Evan Hunt
2011-08-23 00:59:23 +00:00
parent 773f42ae86
commit 5a75f61dd4
8 changed files with 837 additions and 9 deletions

View File

@@ -12,7 +12,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.5 2011/07/06 01:36:32 each Exp $
# $Id: Makefile.in,v 1.6 2011/08/23 00:59:23 each Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -38,11 +38,11 @@ LIBS = @LIBS@ @ATFLIBS@
OBJS = dnstest.@O@
SRCS = dnstest.c master_test.c time_test.c update_test.c \
zonemgr_test.c
zonemgr_test.c dbiterator_test.c
SUBDIRS =
TARGETS = master_test@EXEEXT@ time_test@EXEEXT@ update_test@EXEEXT@ \
zonemgr_test@EXEEXT@
zonemgr_test@EXEEXT@ dbiterator_test@EXEEXT@
@BIND9_MAKE_RULES@
@@ -66,5 +66,13 @@ zonemgr_test@EXEEXT@: zonemgr_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
zonemgr_test.@O@ dnstest.@O@ ${DNSLIBS} \
${ISCLIBS} ${LIBS}
dbiterator_test@EXEEXT@: dbiterator_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS}
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
dbiterator_test.@O@ dnstest.@O@ ${DNSLIBS} \
${ISCLIBS} ${LIBS}
unit::
sh ${top_srcdir}/unit/unittest.sh
clean distclean::
rm -f ${TARGETS}

View File

@@ -0,0 +1,461 @@
/*
* Copyright (C) 2011 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: dbiterator_test.c,v 1.2 2011/08/23 00:59:23 each Exp $ */
/*! \file */
#include <config.h>
#include <atf-c.h>
#include <unistd.h>
#include <dns/db.h>
#include <dns/dbiterator.h>
#include <dns/name.h>
#include "dnstest.h"
/*
* Helper functions
*/
#define BUFLEN 255
#define BIGBUFLEN (64 * 1024)
#define TEST_ORIGIN "test"
static isc_result_t
setup_db(const char *testfile, dns_dbtype_t dbtype, dns_db_t **db) {
isc_result_t result;
int len;
char origin[sizeof(TEST_ORIGIN)];
dns_name_t dns_origin;
isc_buffer_t source;
isc_buffer_t target;
unsigned char name_buf[BUFLEN];
strcpy(origin, TEST_ORIGIN);
len = strlen(origin);
isc_buffer_init(&source, origin, len);
isc_buffer_add(&source, len);
isc_buffer_setactive(&source, len);
isc_buffer_init(&target, name_buf, BUFLEN);
dns_name_init(&dns_origin, NULL);
result = dns_name_fromtext(&dns_origin, &source, dns_rootname,
0, &target);
if (result != ISC_R_SUCCESS)
return(result);
result = dns_db_create(mctx, "rbt", &dns_origin, dbtype,
dns_rdataclass_in, 0, NULL, db);
if (result != ISC_R_SUCCESS)
return (result);
/*
* atf-run changes us to a /tmp directory, so tests
* that access test data files must first chdir to the proper
* location.
*/
if (chdir(TESTS) == -1)
return (ISC_R_FAILURE);
result = dns_db_load(*db, testfile);
return (result);
}
static isc_result_t
make_name(const char *src, dns_name_t *name) {
isc_buffer_t b;
isc_buffer_init(&b, src, strlen(src));
isc_buffer_add(&b, strlen(src));
return (dns_name_fromtext(name, &b, dns_rootname, 0, NULL));
}
/*
* Individual unit tests
*/
/* create: make sure we can create a dbiterator */
static void
test_create(const atf_tc_t *tc) {
isc_result_t result;
dns_db_t *db = NULL;
dns_dbiterator_t *iter = NULL;
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = setup_db(atf_tc_get_md_var(tc, "X-filename"),
dns_dbtype_cache, &db);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_db_createiterator(db, 0, &iter);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
dns_dbiterator_destroy(&iter);
dns_db_detach(&db);
dns_test_end();
}
ATF_TC(create);
ATF_TC_HEAD(create, tc) {
atf_tc_set_md_var(tc, "descr", "create a database iterator");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone1.data");
}
ATF_TC_BODY(create, tc) {
test_create(tc);
}
ATF_TC(create_nsec3);
ATF_TC_HEAD(create_nsec3, tc) {
atf_tc_set_md_var(tc, "descr", "create a database iterator (NSEC3)");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone2.data");
}
ATF_TC_BODY(create_nsec3, tc) {
test_create(tc);
}
/* walk: walk a database */
static void
test_walk(const atf_tc_t *tc) {
isc_result_t result;
dns_db_t *db = NULL;
dns_dbiterator_t *iter = NULL;
dns_dbnode_t *node = NULL;
dns_name_t *name;
dns_fixedname_t f;
int i = 0;
UNUSED(tc);
dns_fixedname_init(&f);
name = dns_fixedname_name(&f);
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = setup_db(atf_tc_get_md_var(tc, "X-filename"),
dns_dbtype_cache, &db);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_db_createiterator(db, 0, &iter);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
for (result = dns_dbiterator_first(iter);
result == ISC_R_SUCCESS;
result = dns_dbiterator_next(iter)) {
result = dns_dbiterator_current(iter, &node, name);
dns_db_detachnode(db, &node);
i++;
}
ATF_CHECK_EQ(i, atoi(atf_tc_get_md_var(tc, "X-nodes")));
dns_dbiterator_destroy(&iter);
dns_db_detach(&db);
dns_test_end();
}
ATF_TC(walk);
ATF_TC_HEAD(walk, tc) {
atf_tc_set_md_var(tc, "descr", "walk database");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone1.data");
atf_tc_set_md_var(tc, "X-nodes", "12");
}
ATF_TC_BODY(walk, tc) {
test_walk(tc);
}
ATF_TC(walk_nsec3);
ATF_TC_HEAD(walk_nsec3, tc) {
atf_tc_set_md_var(tc, "descr", "walk database");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone2.data");
atf_tc_set_md_var(tc, "X-nodes", "33");
}
ATF_TC_BODY(walk_nsec3, tc) {
test_walk(tc);
}
/* reverse: walk database backwards */
static void test_reverse(const atf_tc_t *tc) {
isc_result_t result;
dns_db_t *db = NULL;
dns_dbiterator_t *iter = NULL;
dns_dbnode_t *node = NULL;
dns_name_t *name;
dns_fixedname_t f;
int i = 0;
UNUSED(tc);
dns_fixedname_init(&f);
name = dns_fixedname_name(&f);
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = setup_db(atf_tc_get_md_var(tc, "X-filename"),
dns_dbtype_cache, &db);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_db_createiterator(db, 0, &iter);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
for (result = dns_dbiterator_last(iter);
result == ISC_R_SUCCESS;
result = dns_dbiterator_prev(iter)) {
result = dns_dbiterator_current(iter, &node, name);
dns_db_detachnode(db, &node);
i++;
}
ATF_CHECK_EQ(i, 12);
dns_dbiterator_destroy(&iter);
dns_db_detach(&db);
dns_test_end();
}
ATF_TC(reverse);
ATF_TC_HEAD(reverse, tc) {
atf_tc_set_md_var(tc, "descr", "walk database backwards");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone1.data");
}
ATF_TC_BODY(reverse, tc) {
test_reverse(tc);
}
ATF_TC(reverse_nsec3);
ATF_TC_HEAD(reverse_nsec3, tc) {
atf_tc_set_md_var(tc, "descr", "walk database backwards");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone2.data");
}
ATF_TC_BODY(reverse_nsec3, tc) {
test_reverse(tc);
}
/* seek: walk database starting at a particular node */
static void test_seek(const atf_tc_t *tc) {
isc_result_t result;
dns_db_t *db = NULL;
dns_dbiterator_t *iter = NULL;
dns_dbnode_t *node = NULL;
dns_name_t *name, *seekname;
dns_fixedname_t f1, f2;
int i = 0;
UNUSED(tc);
dns_fixedname_init(&f1);
name = dns_fixedname_name(&f1);
dns_fixedname_init(&f2);
seekname = dns_fixedname_name(&f2);
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = setup_db(atf_tc_get_md_var(tc, "X-filename"),
dns_dbtype_cache, &db);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_db_createiterator(db, 0, &iter);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = make_name("c." TEST_ORIGIN, seekname);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_dbiterator_seek(iter, seekname);
ATF_CHECK_EQ(result, ISC_R_SUCCESS);
while (result == ISC_R_SUCCESS) {
result = dns_dbiterator_current(iter, &node, name);
dns_db_detachnode(db, &node);
result = dns_dbiterator_next(iter);
i++;
}
ATF_CHECK_EQ(i, atoi(atf_tc_get_md_var(tc, "X-nodes")));
dns_dbiterator_destroy(&iter);
dns_db_detach(&db);
dns_test_end();
}
ATF_TC(seek);
ATF_TC_HEAD(seek, tc) {
atf_tc_set_md_var(tc, "descr", "walk database starting at "
"a particular node");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone1.data");
atf_tc_set_md_var(tc, "X-nodes", "9");
}
ATF_TC_BODY(seek, tc) {
test_seek(tc);
}
ATF_TC(seek_nsec3);
ATF_TC_HEAD(seek_nsec3, tc) {
atf_tc_set_md_var(tc, "descr", "walk database starting at "
"a particular node");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone2.data");
atf_tc_set_md_var(tc, "X-nodes", "30");
}
ATF_TC_BODY(seek_nsec3, tc) {
test_seek(tc);
}
/*
* seek_emty: walk database starting at an empty nonterminal node
* (should fail)
*/
static void test_seek_empty(const atf_tc_t *tc) {
isc_result_t result;
dns_db_t *db = NULL;
dns_dbiterator_t *iter = NULL;
dns_name_t *seekname;
dns_fixedname_t f1;
UNUSED(tc);
dns_fixedname_init(&f1);
seekname = dns_fixedname_name(&f1);
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = setup_db(atf_tc_get_md_var(tc, "X-filename"),
dns_dbtype_cache, &db);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_db_createiterator(db, 0, &iter);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = make_name("d." TEST_ORIGIN, seekname);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_dbiterator_seek(iter, seekname);
ATF_CHECK_EQ(result, ISC_R_NOTFOUND);
dns_dbiterator_destroy(&iter);
dns_db_detach(&db);
dns_test_end();
}
ATF_TC(seek_empty);
ATF_TC_HEAD(seek_empty, tc) {
atf_tc_set_md_var(tc, "descr", "walk database starting at an "
"empty nonterminal node");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone1.data");
}
ATF_TC_BODY(seek_empty, tc) {
test_seek_empty(tc);
}
ATF_TC(seek_empty_nsec3);
ATF_TC_HEAD(seek_empty_nsec3, tc) {
atf_tc_set_md_var(tc, "descr", "walk database starting at an "
"empty nonterminal node");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone2.data");
}
ATF_TC_BODY(seek_empty_nsec3, tc) {
test_seek_empty(tc);
}
/*
* seek_emty: walk database starting at an empty nonterminal node
* (should fail)
*/
static void test_seek_nx(const atf_tc_t *tc) {
isc_result_t result;
dns_db_t *db = NULL;
dns_dbiterator_t *iter = NULL;
dns_name_t *seekname;
dns_fixedname_t f1;
UNUSED(tc);
dns_fixedname_init(&f1);
seekname = dns_fixedname_name(&f1);
result = dns_test_begin(NULL, ISC_FALSE);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = setup_db(atf_tc_get_md_var(tc, "X-filename"),
dns_dbtype_cache, &db);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_db_createiterator(db, 0, &iter);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = make_name("nonexistent." TEST_ORIGIN, seekname);
ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
result = dns_dbiterator_seek(iter, seekname);
ATF_CHECK_EQ(result, ISC_R_NOTFOUND);
dns_dbiterator_destroy(&iter);
dns_db_detach(&db);
dns_test_end();
}
ATF_TC(seek_nx);
ATF_TC_HEAD(seek_nx, tc) {
atf_tc_set_md_var(tc, "descr", "attempt to walk database starting "
"at a nonexistent node");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone1.data");
}
ATF_TC_BODY(seek_nx, tc) {
test_seek_nx(tc);
}
ATF_TC(seek_nx_nsec3);
ATF_TC_HEAD(seek_nx_nsec3, tc) {
atf_tc_set_md_var(tc, "descr", "attempt to walk database starting "
"at a nonexistent node");
atf_tc_set_md_var(tc, "X-filename", "testdata/dbiterator/zone2.data");
}
ATF_TC_BODY(seek_nx_nsec3, tc) {
test_seek_nx(tc);
}
/*
* Main
*/
ATF_TP_ADD_TCS(tp) {
ATF_TP_ADD_TC(tp, create);
ATF_TP_ADD_TC(tp, create_nsec3);
ATF_TP_ADD_TC(tp, walk);
ATF_TP_ADD_TC(tp, walk_nsec3);
ATF_TP_ADD_TC(tp, reverse);
ATF_TP_ADD_TC(tp, reverse_nsec3);
ATF_TP_ADD_TC(tp, seek);
ATF_TP_ADD_TC(tp, seek_nsec3);
ATF_TP_ADD_TC(tp, seek_empty);
ATF_TP_ADD_TC(tp, seek_empty_nsec3);
ATF_TP_ADD_TC(tp, seek_nx);
ATF_TP_ADD_TC(tp, seek_nx_nsec3);
return (atf_no_error());
}
/*
* XXX:
* dns_dbiterator API calls that are not yet part of this unit test:
*
* dns_dbiterator_pause
* dns_dbiterator_origin
* dns_dbiterator_setcleanmode
*/

View File

@@ -0,0 +1,21 @@
$TTL 600
@ in soa localhost. postmaster.localhost. (
2011080901 ;serial
3600 ;refresh
1800 ;retry
604800 ;expiration
600 ) ;minimum
in ns ns
in ns ns2
ns in a 10.0.0.1
ns2 in a 10.0.0.2
a in txt "test"
b in txt "test"
c in txt "test"
d.e.f in txt "test"
e in txt "test"
f.g.h in txt "test"
f.g.i in txt "test"
f.g.j in txt "test"
k in txt "test"

View File

@@ -0,0 +1,319 @@
; File written on Mon Aug 15 16:51:56 2011
; dnssec_signzone version 9.7.3rc1
test. 600 IN SOA localhost. postmaster.localhost. (
2011080901 ; serial
3600 ; refresh (1 hour)
1800 ; retry (30 minutes)
604800 ; expire (1 week)
600 ; minimum (10 minutes)
)
600 RRSIG SOA 7 1 600 20110914225156 (
20110815225156 39833 test.
IoQPcpx+Y2btVBBdM2H/9ppRMjphB1thwrdh
midhKH+MXDAauUIENucugi3zLsc1o2ke8LnQ
v3lCLd/bb5MD1otuS8vOw1GWEFhXOUBZU6wS
QwEIcG4BiSlz7/GvOlRa2znkOmZ3c8bD/J3Y
XUWDI3BEDPgrZqfxEvoMyPEWjO8= )
600 NS ns.test.
600 NS ns2.test.
600 RRSIG NS 7 1 600 20110914225156 (
20110815225156 39833 test.
OgEimhmFIAqlH0hyQy3pTsveBHKyqs9WfO1S
uDPRj3DFgFEAjoY473T8GxG2C+jTVL/UMVcb
BTZ8wIAiUHhqKLcmr0q/1X+kNUs7tNi+6oMn
/jxaOuRL6c8Kf2gl2t4g6JTwQqLQhUHTfQP+
bEfKUr75VsVfxCQZIHlZ3/AlxZM= )
600 DNSKEY 256 3 7 (
AwEAAc0FzrE7jUiaKIGZpIaFE8E989topAJN
dWIQUQ7BSKabmpBP2M+SXHwIiQ/yC25iqudO
IxjRcK7nHB1VoP84xU2oMj6eeSqQHf/bYaji
Y8IfR7lgrzoDWzq+0rtnKMJc/JM8SMkcoBAS
llvxarDJTZheZjlrCvhpRJC+FAkBsx81
) ; key id = 39833
600 DNSKEY 257 3 7 (
AwEAAc55LPDhBLqfDUpjYYbBt+N63CiZtKrD
UDGeFAerbw0MWIUi3PgMr7yGVrj8e5Qjp9UN
zBUax6NdhlYVtFA8CwMTXGBjxgyqUoWpce08
lswxfE70BpgUA6w5efs0/mYtX9/A76etCaSI
oNH2vfa47BCdCPDfC1uTgyeuNuDvhszHaSiD
8OY7tLa/voecUlq38sdqi2raf2DvgOm7rdFa
reXOS/WIj7zd4XYrV1JGthxOMVlQ7zdv9rVd
UNUIF2d4hwCZJQr0ejhmvB3m/DuNmNOPYmnv
KTmLSE+IJ6baqYvKOVxwV+SaCnuJEjv+3Yrx
8WQYD/iS9WBhC9FUit0dy+0=
) ; key id = 57183
600 RRSIG DNSKEY 7 1 600 20110914225156 (
20110815225156 39833 test.
xPV+bSGUlbxA5MKBeeRbwUDh3Qc+dm77+OHQ
BHIr1L8/kRP5o5J7MqPA37kea6nhyltYf9xM
RsxyiaBGUUeLyWg/q6hTtkNgAHifOPAhiDz8
AJDSTdSsq9RVtjdobAD0jyzz9sWnB+TPSOmj
Nlyd7VtPVEuSYljgawwfBBO3Kho= )
600 RRSIG DNSKEY 7 1 600 20110914225156 (
20110815225156 57183 test.
S3jkC7AvyFc4ShfHt6AWgS4zpx9DzWHBK9gV
2H23OJzy8H1At/CjKxWVHLJ/io+ygryVnt/I
47Jyhh9i43TnXj8il475YsweGnXGZSorrcXA
3IsD2lOuRYnp3yetxe2ZrMGNDqqImE6X4x1a
UJI0cbE2UMZfUt8Rm5USiGzwAEgFD1OXxvMD
UT3flyp+Ote9FConK8gewV4wlJuBFemWT7BZ
lUYnoqfuAeEn2+1pIBS0iA0LNFjNBaEgtcjo
QeweN32yKoApau47Dl/Klw7KFT8+PLZ0QPbt
XAkJU7q94Q5aucDuHCSCTCc+2vZxdEnXKvRY
rfLuG8r/V5Kn+1iYrQ== )
0 NSEC3PARAM 1 0 10 -
0 RRSIG NSEC3PARAM 7 1 0 20110914225156 (
20110815225156 39833 test.
kghSSeP8AZiQ/zmxgxAyG0itoUMo5adG5pxD
p8T3ZmbxEUSyG5acxBFkmeY39wVU0Cda8tWc
HHrMbB5e2GN8z6xJ0A4rVyXfKSYJSz+iKWfk
7sOFRjd8OLYE3di6PwIpk6ORUiRPMFLDQCH0
Q27hLsSoKyd50orKKI+ncjz7WzU= )
a.test. 600 IN TXT "test"
600 RRSIG TXT 7 2 600 20110914225156 (
20110815225156 39833 test.
UEVOlnL6CDRNCfk/Xge2oaGYCV1+ewwi5zJ0
CX4DdwiNEkItL4HgBe8xXfxgFC3qySdsSYPE
1krdFyIkAclMCwHECd1UwZbGlMTEUGrE1KOB
8vQY+OhIV9TAhqNwnjbu7s2ZdNUv3wiUPcfk
hCJ4rzP6yeV2inLwZulXnhxb6Pk= )
b.test. 600 IN TXT "test"
600 RRSIG TXT 7 2 600 20110914225156 (
20110815225156 39833 test.
HcyQlO9io6Rc5e4vVqlRmK5PacOaFQJmdERG
5Aobpgm1FuCLC7F+IMZ0d1XvBWnsw9iDzV43
UKzTGqUSmDiSBzs4QzHlacGickIW8EOV4xyJ
+mcJ0FZh4YNbkt6CiX+8SF6IxfCMhRMjpSsK
rWqJMG3LXkI6W9stShzsYAFBOzQ= )
e.test. 600 IN TXT "test"
600 RRSIG TXT 7 2 600 20110914225156 (
20110815225156 39833 test.
jUn5FGRTL9OcFU7tvfkUnSwY8jA+8JynE0hi
ZJbYXDU5CiWGmR2B3yPHxUCewRqouyVCV8bc
xZsSuBxvcdYKryYDbjsmB83GlSEuxE9J7XZs
8SxUP8PobLVqzXgEZS/XRU2G+R915ZDP9/iL
z9oYwc9TkeyXbp8J/ZsH88tG980= )
c.test. 600 IN TXT "test"
600 RRSIG TXT 7 2 600 20110914225156 (
20110815225156 39833 test.
cRxAj45oFDDCd8xQXxD1F0Qq8XeBWAj8EYS3
7nFXAgAy8sTczFvYCNGj79o7BALJwM4vc/wx
6rjsiO/sHgfTMEBDq6lH9Wql72uhwavI2SrL
/h/wBP5q4BXlQ4xp6cLhhdifOWhNTvLP+Fe5
U6yjvqneiKspze9SiFbcmRDiJds= )
d.e.f.test. 600 IN TXT "test"
600 RRSIG TXT 7 4 600 20110914225156 (
20110815225156 39833 test.
ENjCzr/P9rJmj5OJLzYwWtHtBg2Uz+qJDucz
I97Pq9F819/c5sxNfT4hgICCw6ZfT4ffbzye
fFJ0JVrh2cYOzu68ozlgek/Uml1UW0pDQVdI
s4zEgp4XK9wXUxtWChSqp5YXMdeHegZFu32i
IMNTbJDudwYSwhr2FyG92ZRi8Y8= )
f.g.h.test. 600 IN TXT "test"
600 RRSIG TXT 7 4 600 20110914225156 (
20110815225156 39833 test.
HT7iocFsfDjeX6j9RJdE3xfVGkIxhajFHgM/
T/mJj/al4HKV6Ajia8DhpdfDrgM2m7r+Pgcn
FSIstfebQsuFCnHX/gIalDND/grHKsetQnMP
Y7O4QLsRnTV53fdlqQ4eT+jBW6fzJdGySVN+
bg6kNJZS8DebjmlKtZz7tXjkP+4= )
f.g.i.test. 600 IN TXT "test"
600 RRSIG TXT 7 4 600 20110914225156 (
20110815225156 39833 test.
kHJJeNSL1rz4QRYqOzhGMQl1yIdio7l8Lg8H
f0TsvFLa6BudVtwKUm+Kz2QiDn7/Lew8w0KX
vVHxX/Vwl3Ixk54YgMKLNogz2TEvnh/VGiS7
8r0oSUrg0CFd+xDfxnLeRqX5NNfMuSJap5WH
Aw7IVeRjXDwJFYnytMEnTrhHHHg= )
f.g.j.test. 600 IN TXT "test"
600 RRSIG TXT 7 4 600 20110914225156 (
20110815225156 39833 test.
lIEHEhDFhOWK8W/F2xWELU2p/X77S2KTivm9
sY4k3RPsLNHE7p+lF8p72Lcb79rtltnoVYtE
pTIiaUcmgGwfaI4cwfXbeuEgnuTiLg7Xrefx
3GT86Q+8gfgbMXUmRA/eouWZhCOaYJN99gYz
urzDMiRLYmILHmLlnvo82SgXeuk= )
k.test. 600 IN TXT "test"
600 RRSIG TXT 7 2 600 20110914225156 (
20110815225156 39833 test.
wC3zgYWsuLga8Vu3QFu/Ci8SzRbA5bvjSmDj
NzcpjU5cvJBxtgzatCr02AaUC94bI0JzNrEB
nFyWCYw55lyy+bAHU1u05UcQmz0n5yxkvmHX
i8ZjMyQkAvNKodJHaFQqUKKIDuSHD2EziKqg
eNn55YRS11ihkODehUVNl7TnYeA= )
ns.test. 600 IN A 10.0.0.1
600 RRSIG A 7 2 600 20110914225156 (
20110815225156 39833 test.
VyK/WlQ6ikXdjF/arGzyAyYhOc8IYNBp4QLW
gtYjvbjIcV5+9JINWmUs61VjJ14nES1sI0xb
9vQJuiPXTM1awUAnvOKLhaX6fbJaEiR1w6Cf
RT5QKBMxNBKVStqdabHcigY4DUuc1PQk1vCw
yMUJt3nHNVMZk+XAycNHzBeYjik= )
ns2.test. 600 IN A 10.0.0.2
600 RRSIG A 7 2 600 20110914225156 (
20110815225156 39833 test.
CX6UlZL+5NQJViKfbe/E3uIJk/wjUzoiHBhY
B6gS8nxZzlRPdTTXyMZoRa4etTZEbrRjnyXk
1rP47faCUwbh//XqukN9f7FZ4Y39NpPS2XpX
0Lx6M93Jz46lbzmseMFs2YmNMzzhN4uhRvl/
8gPtYsn9KMXnAlFfa4XrE5LNVyY= )
1F3JQ6EANHNHOCMUPQTVNM339VDTR51C.test. 600 IN NSEC3 1 0 10 - 7QKPELF33JOK9BVJ7CKE99AHG40B0SH7 A RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
w7aS12lxLNh+G1B/2kEq1BO6IzYvyC8n/MGV
0jvFnapNXGZMPrPxGeO2wkw1JXepuXCv98be
M4SjQywaH+VP6ZMTIfjxRxtcCM+aLAFhiz0l
/MILEkjemmxjAfvV7emRVMwCGcoGI7qC3Xxq
q5g8EzJiYyTCOnI5LKRggn97wGg= )
7QKPELF33JOK9BVJ7CKE99AHG40B0SH7.test. 600 IN NSEC3 1 0 10 - 94Q15K1V1VE5F87EI37T2B9A39EEC368 TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
J4ObL3p4eN0jWh06M+rX2SSPANQoKfnosElB
KcKE7fLqEjKK7N6Yh6KUlbEP25tfeZ7W6GBJ
b7q6Nh0Ax8fYdc/6JVvmxcwWcx5Lw1TfITGB
ttFntJlbp1A8lwP3pn8Ksql1X2ogh78AsgTb
X5kmXVukC1oEzt98EAa/V/an8QA= )
CS8M3UVG0UJDR6USBES4U9SNUGQI2RJE.test. 600 IN NSEC3 1 0 10 - ETEQB5V431INUIIE547FKSOF7O4DJ62J A RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
Vyd/2b0S15fACJ8TiPXKtScV9A/ZztVumZAm
o2S6jaVJKWik+8orDW+WiJ4/PEl26PK2m1uv
HD2beuUCHj9EnYkN/dzL3Bsc302qr9xqsh0q
VFS2moznoNG415ZV3vgYR7L9DAp43ZeFuw6I
7sr21hLYLUeo31xBsJg7RlOL+4s= )
ETEQB5V431INUIIE547FKSOF7O4DJ62J.test. 600 IN NSEC3 1 0 10 - F8G1MB0JUEU3FBI11CAVFIPGEA3POOIM
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
oOHs1eb3JYeOMOnzE2PS6NIXBNzSoTYPIxo/
P0d/ihsLKra3yNJNPTlu4kf+FZoNYAGtMK/D
6dZWFvtdswDdi2C5WSgsanuHqXq5Lr3A1nCe
cQI5PO4RrLymB+MtYg15CNKcnc0WmJO8deSR
WzNOarC+Iz1Xj3FkKDS4FFr+02Q= )
94Q15K1V1VE5F87EI37T2B9A39EEC368.test. 600 IN NSEC3 1 0 10 - CS8M3UVG0UJDR6USBES4U9SNUGQI2RJE
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
K0PvN7YtHQ63x/x2yXXa2S9GBGuTNJywDZ8M
wyMSwytCb9mn4hnKD5mJHaXGTw3YX7usbnEO
ce6hiJdN/VhMfbRMOvUpgyblOj4kXiYVZY1a
SyycfugK/Hu1j4az7lIhhnnx58GChA6mg8Vx
3Uz6cNDDCSTBTl09NyeUUrKWsHQ= )
FBH6B0LHT9PPQB1P98D228HA1H52L8PO.test. 600 IN NSEC3 1 0 10 - JGU2L7C3LKLHAKC5RHUOORTI2DCKK3KL
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
giXRE+4ZeIzDrhx1XkFSpIKGFd3UGzlrLZnO
Ur9nMUfwvU5A3fitEkdayo3ZDH7MQGpSotaH
ReiFXx3Z6Hm2NIN/RHYZQr9e0vbMYSjkANdu
HWBA1SrSq5SHyuy970mPd4jfTHiABCo6fJGB
ykGClZGou0WSaB+Ak19fMbeQ2Wo= )
JGU2L7C3LKLHAKC5RHUOORTI2DCKK3KL.test. 600 IN NSEC3 1 0 10 - KFMJ88CKMKUQQJE59IKFBOLLLD4DF55H TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
BHTDUgZdWNLgz3xHYMqvlWK/IJ0xrXESoREc
6D3sO9bcLTMYPO9t80itOlipwp4AmaVOBXPt
cKSdgsUXDEtHqNSxtGbNr5xQ+Aqsep0GX71V
HkcIuiNdTUw83dkajCHMkmQCbEjp9mbdiTmS
haNW2EsscldfaS1aq5tYUhCT3l4= )
L993U6VC0DUV5QJ8TRPD2IQLM8FJ7AT9.test. 600 IN NSEC3 1 0 10 - LSMRLLNBQGGK8J6V40KLM2LG5TE4FS0P
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
vE7K0Nrju4qLFDYkIyMY5bIMT0wu8MJdxL6u
7WVA4HepccKQcUnvVoBAcrA9+MUeteyrad8Y
SJvQIt7sz5t7FViWSq5IMPVPujWtW5J30LhJ
mOLd1KmnFWoVthJ1oFNzBM80A60seKNnEw1M
lV6Y+v0gNYIQensUb9w6SVMTpxE= )
F8G1MB0JUEU3FBI11CAVFIPGEA3POOIM.test. 600 IN NSEC3 1 0 10 - FA1T7MKUUV9SD4VDBJQ3GRFK1IDTCKL7
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
DkL9ONc0vpsKdG20ol8XPAaVfLb7kf1wnKbR
rQUB1trGSHm/Igo06of43zm9J+56htFJg1xD
I2de0sCUBQYyHVBBDiBAd1g+ZvcpUlLP0w8M
NxMviMiG/WQAdGXHwYfUimwMWD7gNGl1m05H
HwYmzGs+d1bClDNBrFhdfdL2+iA= )
LSMRLLNBQGGK8J6V40KLM2LG5TE4FS0P.test. 600 IN NSEC3 1 0 10 - LUAN2Q3I2OCVSD41MP08HNA9JP22D38K
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
ZgiWuMqodQuhwuAF6CIiJTsdRahi+poOiZAM
WXNP0wXfdptcG2uhbdDwy+0crhe3tuybhwcb
CuiaQUh0XNPhgF+qmXpGobaqBhCEvCF4K9qY
OCIoMfsI1pIBVbMw0+YXVarFZ8+mfNU/+6n6
yy2+1nCg3k4XR2Dpv4CeDBfcAuM= )
NAL1UIEBM38NKMN6RQOKE8T781IA7UKI.test. 600 IN NSEC3 1 0 10 - OUSGP0LO9FGAROHDULQVSTI3OLQIBB39 TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
x8JiXPI+EXHz8ZO/VW0/+9wWsBNqeSMxXZIV
ibOnogSg7Wi7Yq1xftKC2+xEevNxSZnBibEy
Sgro5xKTf0n7pD9hHVBLoYmOOnbXY3QNQ2EQ
y3LdPT355WmwVddVOOxNpNRp2zQyqg7BhVA3
wxY7tyVQd4x1+95ATUQBnFditdE= )
KFMJ88CKMKUQQJE59IKFBOLLLD4DF55H.test. 600 IN NSEC3 1 0 10 - L993U6VC0DUV5QJ8TRPD2IQLM8FJ7AT9 TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
KQPaN2Ecebifbl4Bz5Yo0x2DgGmZiVhpSydm
oy/5NtMjt7G472JrKlqByap+VxW0bpzo3IER
3P8Dsv7pfBD4/Cl5sFqwZL7wYy7RB4dQLVCi
Pepc/Mr3gR2XmL91fpGttMj5jGscnVQJCyFa
obzhsVaVImUQZFDPb0UQUHwIhOA= )
LUAN2Q3I2OCVSD41MP08HNA9JP22D38K.test. 600 IN NSEC3 1 0 10 - NAL1UIEBM38NKMN6RQOKE8T781IA7UKI TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
NJ+X3d0qh2+fbSnG0iQPxAeDIOzX5NTmY9fS
x7IO/DDcgUhPvl1YYdz5J999cec1zzOKp10J
YbsIAzg0w/Y4D4CBUw3IkcOrUFOODb6eJQGb
rVFRqmp3BUP4qOAWUZvx4oQ0KG4K/h/KJMbU
Vcdl7PF7G5O5hMyR9UWg4zal7Sk= )
OUSGP0LO9FGAROHDULQVSTI3OLQIBB39.test. 600 IN NSEC3 1 0 10 - PQQ28M3U2MM08GGFV3JKR76G2H9IUJPC TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
A/qxYrSE/smBGbST8j8eGPCrRnwvVa25kDha
IuA3nv0vzXhFvlruc9f0HRGwsq6A2pw3I5W+
xo2/JxsNyFOotdwaDDEBzqPkJmrzupxQS4Hm
rHSLnRnNw4QzvzNjAGWMYAoe3OeHC47wmAtI
qE91EHZTlPP28CUXOMo+7sCaOa8= )
U0UVS2SUP89P2TM3PJO4TC1GPJ2O6519.test. 600 IN NSEC3 1 0 10 - VA2VG5BEMCKQP6MS5NHHGL18031BIA7M NS SOA RRSIG DNSKEY NSEC3PARAM
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
rahhkfiF+Rk6oqbWTdu9qcwhmj5hbDuIFdiJ
GmaG+cFSv5Mjp+txNVCvBK9Hq/VpW0ypen/3
JC0sVAugSX+HAKAgyaMKmgWCvoQZ6ZSJUh7o
LRPcT+oxVXQAqjovxpaV8k6sYo44tpljPdOD
UluWAP5SrmJKjzCxs27KGRx8MK4= )
VA2VG5BEMCKQP6MS5NHHGL18031BIA7M.test. 600 IN NSEC3 1 0 10 - VAKOQ2TPD7S25NFBJT73J3C4OGU10RJ5 TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
XcBeZ8lo9Qo8z56+1FdGDjh6ZHCfO+MQ/wnY
TEUo/aWLkPTyq39nLhe0qVBJxmDpM+KQFuG9
cjQT5fvrlrY+lv6dedB64EBMYy4kKbIv7N5+
r6+sfWlvtKsfXxysLSk2+jLEm5NuLFrOdNas
WLVsq741D3YcWt4kM1HCyk3DNF8= )
FA1T7MKUUV9SD4VDBJQ3GRFK1IDTCKL7.test. 600 IN NSEC3 1 0 10 - FBH6B0LHT9PPQB1P98D228HA1H52L8PO TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
jB/vLrvx4sQQD7J3ZacAAyhcFmIPh7LH3ljw
IAIaeLb10oX5q1/nQKYdfq976TMy5sWpBcmd
i91WLxd+T/gOSumyP8bC3g+SUoyZ9wxY6A6a
MMx1rn0QA9IKrxMqojs9M3urJ8QAeIS+KyAn
rbyyJuG+EVm0prqlPZtzUi28WCI= )
PQQ28M3U2MM08GGFV3JKR76G2H9IUJPC.test. 600 IN NSEC3 1 0 10 - U0UVS2SUP89P2TM3PJO4TC1GPJ2O6519
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
asCOU9OkVWMvUU2IUpwMgdYf0faA04zPbaFf
qywYsv3NH01Lky6G3a0WUPAbBm7TAYx/ln8a
559vlpp/gpXEl9CcLrjO6wy5i0ryp8gVHtKJ
rQlEc/uw4SY+S5t7FuZc2rNRdAbxVMYuwrvm
HBsKDPblre3e06ZZFEmnGFzCgmg= )
VAKOQ2TPD7S25NFBJT73J3C4OGU10RJ5.test. 600 IN NSEC3 1 0 10 - VNCCJH8JPOLGLAGVMV3FKS09M7RRDU47 TXT RRSIG
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
Pt4tKB1p/jsyLYab9LSt5MF1KTRT18nRTOox
q0IACkXkKx7W5xv6nSYXIB+nQzNp1Y1hhoXn
9IFi0liPnIAOp73w4vybhfIdTFiEmHPHT6O9
VIx5cSriqBI6Qda8GtfeIb96P8SojbUk5BDI
g18iYjviGhQYRgpU3tg1qd7pbcc= )
VNCCJH8JPOLGLAGVMV3FKS09M7RRDU47.test. 600 IN NSEC3 1 0 10 - 1F3JQ6EANHNHOCMUPQTVNM339VDTR51C
600 RRSIG NSEC3 7 2 600 20110914225156 (
20110815225156 39833 test.
ZMZPHawhkuzSV7C7zkgghH/jpw9CQVR1JUXq
pAeY2iIIWwNhfuskJaLgtu/5SuKnJtrv6D4N
g+lfEkBReia5xO/SCcHv8/hXEPH8vZ4xe1C9
6GVB6ip2hKw2g5HpyF7X18WgwZ0cqPWVg+Q+
xRLpXH+53391Wt5rG7qJswn5RLE= )