From 372579c534432cbaaacbfa305676dbee55a38851 Mon Sep 17 00:00:00 2001 From: Ruben Kerkhof Date: Mon, 2 Mar 2015 14:12:32 +0100 Subject: [PATCH] Fix segfault in zone2lmdb $ ./pdns/zone2lmdb --zone=./regression-tests.recursor/configs/10.0.3.10/example.net.zone ASAN:SIGSEGV ================================================================= ==25526==ERROR: AddressSanitizer: SEGV on unknown address 0x00000000000c (pc 0x7fe8b57a4d50 bp 0x7ffedb062f90 sp 0x7ffedb061d58 T0) #0 0x7fe8b57a4d4f (/lib64/liblmdb.so.0.0.0+0x4d4f) #1 0x7fe8b6c4c1aa in emitData(std::__cxx11::basic_string, std::allocator >, ZoneParserTNG&) /home/ruben/src/pdns/pdns/zone2lmdb.cc:99 #2 0x7fe8b6c4f301 in main /home/ruben/src/pdns/pdns/zone2lmdb.cc:295 #3 0x7fe8b493b83f in __libc_start_main (/lib64/libc.so.6+0x2083f) #4 0x7fe8b6b6ef88 in _start (/home/ruben/src/pdns/pdns/zone2lmdb+0x27f88) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV ??:0 ?? ==25526==ABORTING --- pdns/zone2lmdb.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pdns/zone2lmdb.cc b/pdns/zone2lmdb.cc index 36279b346..a193d2ab1 100644 --- a/pdns/zone2lmdb.cc +++ b/pdns/zone2lmdb.cc @@ -241,6 +241,8 @@ try int count=0; + openDB(); + if(zonefile.empty()) { BindParser BP; BP.setVerbose(::arg().mustDo("verbose")); @@ -261,7 +263,6 @@ try int tick=numdomains/100; cout <<"["; - openDB(); for(vector::const_iterator i=domains.begin(); i!=domains.end(); ++i) { if(i->type!="master" && i->type!="slave") { cerr<<" Warning! Skipping '"<type<<"' zone '"<name<<"'"<