]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Webserver: Don't swallow errors from getAllDomains
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 12 Mar 2019 15:26:13 +0000 (16:26 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Thu, 21 Mar 2019 09:37:07 +0000 (10:37 +0100)
pdns/backends/gsql/gsqlbackend.cc
pdns/ws-auth.cc

index 9287010f5117b9423824230fde53c4512768e14c..b3af298619c71984d487236bf8700d0c0bb94de9 100644 (file)
@@ -1304,8 +1304,13 @@ void GSQLBackend::getAllDomains(vector<DomainInfo> *domains, bool include_disabl
       if (!row[4].empty()) {
         vector<string> masters;
         stringtok(masters, row[4], " ,\t");
-        for(const auto& m : masters)
-          di.masters.emplace_back(m, 53);
+        for(const auto& m : masters) {
+          try {
+            di.masters.emplace_back(m, 53);
+          } catch(const PDNSException &e) {
+            throw PDNSException("Could not parse master address (" + m + ") for zone '" + di.zone.toLogString() + "': " + e.reason);
+          }
+        }
       }
 
       SOAData sd;
index df59b7eaf1d80df13c08d926cd8bdf6feac58c4e..83f9f30b1619f04b7cdebe1318e31bce422f86b0 100644 (file)
@@ -1679,7 +1679,11 @@ static void apiServerZones(HttpRequest* req, HttpResponse* resp) {
       domains.push_back(di);
     }
   } else {
-    B.getAllDomains(&domains, true); // incl. disabled
+    try {
+      B.getAllDomains(&domains, true); // incl. disabled
+    } catch(const PDNSException &e) {
+      throw HttpInternalServerErrorException("Could not retrieve all domain information: " + e.reason);
+    }
   }
 
   Json::array doc;