]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Fix invalid scope test to do what I think is actually intended
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Mon, 20 Jan 2025 13:08:02 +0000 (14:08 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Wed, 28 May 2025 11:03:52 +0000 (13:03 +0200)
pdns/recursordist/lwres.cc
regression-tests.recursor-dnssec/test_ECS.py

index acf6d01cb9d45bad017bda2d28df5d9abc0bc882..c87701f015a1c96273dcc734638dd898e32a645b 100644 (file)
@@ -599,7 +599,7 @@ static LWResult::Result asyncresolve(const ComboAddress& address, const DNSName&
 
       // If we sent out ECS, we can also expect to see a return with or without ECS, the absent case is
       // not handled explicitly. If we do see a ECS in the reply, the source part *must* match with
-      // what we sent out See https://www.rfc-editor.org/rfc/rfc7871#section-7.3
+      // what we sent out. See https://www.rfc-editor.org/rfc/rfc7871#section-7.3
       if (subnetOpts) {
         for (const auto& opt : edo.d_options) {
           if (opt.first == EDNSOptionCode::ECS) {
index 29a75cf1e24c6a1efba166bc784be7e2458bd161..e3934e3ab618c75bafd34fcd2e0e18ddab094d12 100644 (file)
@@ -481,9 +481,9 @@ ecs-ipv6-cache-bits=128
 
     def testSendECSInvalidScope(self):
         # test that the recursor does not cache with a more specific scope than the source it sent
-        expected = dns.rrset.from_text(nameECSInvalidScope, ttlECS, dns.rdataclass.IN, 'TXT', '192.0.2.0/24')
+        expected = dns.rrset.from_text(nameECSInvalidScope, ttlECS, dns.rdataclass.IN, 'TXT', '192.0.2.0/24/25')
 
-        ecso = clientsubnetoption.ClientSubnetOption('192.0.2.1', 32)
+        ecso = clientsubnetoption.ClientSubnetOption('192.0.2.1', 24)
         query = dns.message.make_query(nameECSInvalidScope, 'TXT', 'IN', use_edns=True, options=[ecso], payload=512)
 
         self.sendECSQuery(query, expected)
@@ -623,7 +623,8 @@ class UDPECSResponder(DatagramProtocol):
 
                     # Send a scope more specific than the received source for nameECSInvalidScope
                     if request.question[0].name == dns.name.from_text(nameECSInvalidScope):
-                        ecso = clientsubnetoption.ClientSubnetOption("192.0.42.42", 32, 32)
+                        ecso = clientsubnetoption.ClientSubnetOption("192.0.2.1", 24, 25)
+                        text += "/25"
                     else:
                         ecso = clientsubnetoption.ClientSubnetOption(self.ipToStr(option), option.mask, option.mask)