]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
SVCB parser: allow quotes around port= 14823/head
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 15 Nov 2024 11:47:13 +0000 (12:47 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 15 Nov 2024 11:48:06 +0000 (12:48 +0100)
modules/tinydnsbackend/data
modules/tinydnsbackend/data.cdb
pdns/rcpgenerator.cc
regression-tests.nobackend/tinydns-data-check/expected_result
regression-tests/tests/svcb-servicemode/expected_result
regression-tests/tests/svcb-servicemode/expected_result.dnssec
regression-tests/zones/example.com

index dca063c8af3b30b4456958903fac9bb39ec631de..06c8f6161170af6b0caccb26595bf2fe74c95578 100644 (file)
 :bar.svcb.example.com:28:\040\001\015\270\000\000\000\000\000\000\000\000\000\003\000\004:120
 :bar.svcb.example.com:64:\000\001\000\000\001\000\003\002h2:120
 :bar.svcb.example.com:64:\000\003\000\000\001\000\003\002h3\000\003\000\002\005\334:120
+:bar.svcb.example.com:64:\000\004\000\000\001\000\003\002h3\000\003\000\002\005\335:120
 :baz.svcb.example.com:64:\000\000\004foo1\004svcb\007example\003net\000:120
 :dsdelegation.example.com:43:m\341\010\001\312\361\352\256\315\253\347afpx\217\220\042EK\365\375\237\332:120
 :escapedtext.example.com:16:\005begin\022the\040\042middle\042\040p\134art\007the\040end:120
index ecb1694777a9a64bfd3e358e69d2ccd098119c27..98225edd8ca8b4720e734abe1417e0dab172b592 100644 (file)
Binary files a/modules/tinydnsbackend/data.cdb and b/modules/tinydnsbackend/data.cdb differ
index 6a4569100cd003e7a499b62065fa3a3047d4e62f..3da0baa20e407384b9c3dfe93ec4842ab4293e56 100644 (file)
@@ -335,7 +335,7 @@ void RecordTextReader::xfrSVCBValueList(vector<string> &val) {
   d_pos += ctr;
 }
 
-void RecordTextReader::xfrSvcParamKeyVals(set<SvcParam>& val)
+void RecordTextReader::xfrSvcParamKeyVals(set<SvcParam>& val) // NOLINT(readability-function-cognitive-complexity)
 {
   while (d_pos != d_end) {
     skipSpaces();
@@ -469,7 +469,13 @@ void RecordTextReader::xfrSvcParamKeyVals(set<SvcParam>& val)
         port = (v.at(0) << 8);
         port += v.at(1);
       } else {
-        xfr16BitInt(port);
+        string portstring;
+        xfrRFC1035CharString(portstring);
+        try {
+          pdns::checked_stoi_into(port, portstring);
+        } catch (const std::exception &e) {
+          throw RecordTextException(e.what());
+        }
       }
       val.insert(SvcParam(key, port));
       break;
index 29e484430fb70a07131f8f07401e94b3ed5cba4d..c65a7f4d26a4341f03b0bf85eca8767b2ecad2bf 100644 (file)
@@ -1,4 +1,4 @@
-2ed2eb54a4cb3fd105aa78e6d4c99685  ../regression-tests/zones/example.com
+f3e86fd522b08d4812505da489ecb5b0  ../regression-tests/zones/example.com
 f8f0d7b157495ec8ee70851e3d5cb65e  ../regression-tests/zones/test.com
 e5e3ee998d151fe194b98997eaa36c53  ../regression-tests/zones/test.dyndns
 dee3e8b568549d9450134b555ca73990  ../regression-tests/zones/sub.test.dyndns
@@ -15,5 +15,5 @@ a98864b315f16bcf49ce577426063c42  ../regression-tests/zones/cdnskey-cds-test.com
 9aeed2c26d0c3ba3baf22dfa9568c451  ../regression-tests/zones/2.0.192.in-addr.arpa
 99c73e8b5db5781fec1ac3fa6a2662a9  ../regression-tests/zones/cryptokeys.org
 1f9e19be0cff67330f3a0a5347654f91  ../regression-tests/zones/hiddencryptokeys.org
-e85d67cb577cf1de3127e439e7529311  ../modules/tinydnsbackend/data
-7715e725358f969aa92e46ae9be0c464  ../modules/tinydnsbackend/data.cdb
+16ca9f82f476f5910ed89830dc0f183b  ../modules/tinydnsbackend/data
+022f54332046eb386d636bd9141a4e77  ../modules/tinydnsbackend/data.cdb
index c4a8c4303a4115a2a92161f7d067578400c9a8e3..3956637ce2202ddcbb0313ab3606a18806a59cc6 100644 (file)
@@ -1,5 +1,6 @@
 0      bar.svcb.example.com.   120     IN      SVCB    1 . alpn=h2
 0      bar.svcb.example.com.   120     IN      SVCB    3 . alpn=h3 port=1500
+0      bar.svcb.example.com.   120     IN      SVCB    4 . alpn=h3 port=1501
 2      .       32768   IN      OPT     
 2      bar.svcb.example.com.   120     IN      A       192.0.2.1
 2      bar.svcb.example.com.   120     IN      AAAA    2001:db8::3:1
index 7920485fa5ec3929d68357eff95104f8e07315b9..666a28619e0af148d635b833a3bd1bbe5d603976 100644 (file)
@@ -1,6 +1,7 @@
 0      bar.svcb.example.com.   120     IN      RRSIG   SVCB 13 4 120 [expiry] [inception] [keytag] example.com. ...
 0      bar.svcb.example.com.   120     IN      SVCB    1 . alpn=h2
 0      bar.svcb.example.com.   120     IN      SVCB    3 . alpn=h3 port=1500
+0      bar.svcb.example.com.   120     IN      SVCB    4 . alpn=h3 port=1501
 2      .       32768   IN      OPT     
 2      bar.svcb.example.com.   120     IN      A       192.0.2.1
 2      bar.svcb.example.com.   120     IN      AAAA    2001:db8::3:1
index cd5657a8530647176f36206cd233f02e602d0ca9..96993cecb068957d5ea13f1ac435116b5e126a16 100644 (file)
@@ -20222,6 +20222,7 @@ foo1.svcb IN A 192.0.2.2 ; Should show up in additional
 
 bar.svcb IN SVCB 1 . alpn=h2
 bar.svcb IN SVCB 3 . alpn=h3 port=1500
+bar.svcb IN SVCB 4 . alpn=h3 port="1501"
 bar.svcb IN AAAA 2001:db8::3:1
 bar.svcb IN AAAA 2001:db8::3:4
 bar.svcb IN A 192.0.2.1