From: Aki Tuomi Date: Sat, 26 Oct 2013 19:20:54 +0000 (+0300) Subject: Fix handling of empty lookup/list result X-Git-Tag: auth-3.3.1~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d8c97fe579b2cb49c1f96061d1dead92cf84715;p=thirdparty%2Fpdns.git Fix handling of empty lookup/list result --- diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index 7adedf4304..9c40897e2f 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -192,8 +192,8 @@ void RemoteBackend::lookup(const QType &qtype, const std::string &qdomain, DNSPa return; } - // OK. we have result parameters in result - if ((*d_result)["result"].IsArray() == false) { + // OK. we have result parameters in result. do not process empty result. + if ((*d_result)["result"].IsArray() == false || (*d_result)["result"].Size() < 1) { delete d_result; return; } @@ -222,7 +222,7 @@ bool RemoteBackend::list(const std::string &target, int domain_id) { delete d_result; return false; } - if ((*d_result)["result"].IsArray() == false) { + if ((*d_result)["result"].IsArray() == false || (*d_result)["result"].Size() < 1) { delete d_result; return false; } @@ -233,6 +233,7 @@ bool RemoteBackend::list(const std::string &target, int domain_id) { bool RemoteBackend::get(DNSResourceRecord &rr) { if (d_index == -1) return false; + rapidjson::Value value; value = "";