From 72abd9ef4cd272f9a870e0d7af425e51b565b302 Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Tue, 12 Mar 2019 16:26:13 +0100 Subject: [PATCH] Webserver: Don't swallow errors from getAllDomains --- pdns/backends/gsql/gsqlbackend.cc | 9 +++++++-- pdns/ws-auth.cc | 6 +++++- 2 files changed, 12 insertions(+), 3 deletions(-) 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; -- 2.47.2