]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth views http: report network typos to user 15619/head
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 3 Jun 2025 11:52:21 +0000 (13:52 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 3 Jun 2025 12:01:48 +0000 (14:01 +0200)
pdns/ws-auth.cc

index 0463cb8a9662bc21e7ae0d2cf73a992b6784d2e7..5658ae45628a6dc92866d87d35201dcdd5b9b598 100644 (file)
@@ -20,6 +20,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 #include "dnsbackend.hh"
+#include "iputils.hh"
 #include "webserver.hh"
 #include <array>
 #include <string_view>
@@ -2760,7 +2761,12 @@ static void apiServerNetworksGET(HttpRequest* req, HttpResponse* resp)
   if (req->parameters.count("ip") != 0 && req->parameters.count("prefixlen") != 0) {
     std::string subnet{req->parameters["ip"]};
     std::string prefixlen{req->parameters["prefixlen"]};
-    network = subnet + "/" + prefixlen;
+    try {
+      network = subnet + "/" + prefixlen;
+    }
+    catch (NetmaskException& e) {
+      throw ApiException(e.reason);
+    }
   }
 
   UeberBackend backend;
@@ -2792,7 +2798,13 @@ static void apiServerNetworksPUT(HttpRequest* req, HttpResponse* resp)
 {
   std::string subnet{req->parameters["ip"]};
   std::string prefixlen{req->parameters["prefixlen"]};
-  Netmask network(subnet + "/" + prefixlen);
+  Netmask network;
+  try {
+    network = subnet + "/" + prefixlen;
+  }
+  catch (NetmaskException& e) {
+    throw ApiException(e.reason);
+  }
 
   const auto& document = req->json();
   std::string view = stringFromJson(document, "view");