From: Pieter Lexis Date: Tue, 12 Mar 2019 15:26:13 +0000 (+0100) Subject: Webserver: Don't swallow errors from getAllDomains X-Git-Tag: rec-4.2.0-rc1~35^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72abd9ef4cd272f9a870e0d7af425e51b565b302;p=thirdparty%2Fpdns.git Webserver: Don't swallow errors from getAllDomains --- diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index 9287010f51..b3af298619 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -1304,8 +1304,13 @@ void GSQLBackend::getAllDomains(vector *domains, bool include_disabl if (!row[4].empty()) { vector 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; diff --git a/pdns/ws-auth.cc b/pdns/ws-auth.cc index df59b7eaf1..83f9f30b16 100644 --- a/pdns/ws-auth.cc +++ b/pdns/ws-auth.cc @@ -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;