From c919b27e5be189acf70e426abc711fe9027b1275 Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler Date: Tue, 28 Jan 2014 13:32:36 +0100 Subject: [PATCH] Fix segfault in BindBackend on broken AXFR When an AXFR would abort before beginning a transaction, bindbackend would crash. --- modules/bindbackend/bindbackend2.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index 251b1d5655..003ce9d76b 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -167,6 +167,9 @@ bool Bind2Backend::startTransaction(const string &qname, int id) d_transaction_id=id; return true; } + if(id == 0) { + throw DBException("domain_id 0 is invalid for this backend."); + } shared_ptr state = getState(); const BB2DomainInfo &bbd=state->id_zone_map[d_transaction_id=id]; @@ -207,7 +210,10 @@ bool Bind2Backend::commitTransaction() bool Bind2Backend::abortTransaction() { - if(d_transaction_id >= 0) { + // -1 = dnssec speciality + // 0 = invalid transact + // >0 = actual transaction + if(d_transaction_id > 0) { delete d_of; d_of=0; unlink(d_transaction_tmpname.c_str()); -- 2.47.2