]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Fix handling of empty lookup/list result
authorAki Tuomi <cmouse@desteem.org>
Sat, 26 Oct 2013 19:20:54 +0000 (22:20 +0300)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Fri, 22 Nov 2013 12:47:21 +0000 (13:47 +0100)
modules/remotebackend/remotebackend.cc

index 7adedf43047a578f0a04bafc2f65b8cf59cb99a9..9c40897e2fa23e1f03f16dea948f70ceded74a2c 100644 (file)
@@ -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 = "";