]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: when synthesizing RR responses, own the name fully
authorLennart Poettering <lennart@poettering.net>
Fri, 22 Jan 2016 11:22:05 +0000 (12:22 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 25 Jan 2016 16:19:19 +0000 (17:19 +0100)
When we synthesize A/AAAA for domains like "localhost", then make sure we generate ENODATA if the user asks for RR
types such a RP to be solved on the name. Previously, we'd pass the error back in that case that was generated from the
usual lookup procedure.

src/resolve/resolved-dns-synthesize.c

index e12bb6e8283f7194fe35fdd2a2e251f789ce8721..d93741b73625202f7bd09a5db5927ba39988f9ef 100644 (file)
@@ -348,6 +348,7 @@ int dns_synthesize_answer(
 
         _cleanup_(dns_answer_unrefp) DnsAnswer *answer = NULL;
         DnsResourceKey *key;
+        bool found = false;
         int r;
 
         assert(m);
@@ -398,10 +399,13 @@ int dns_synthesize_answer(
                         r = synthesize_gateway_ptr(m, af, &address, ifindex, &answer);
                         if (r < 0)
                                 return log_error_errno(r, "Failed to synthesize gateway hostname PTR RR: %m");
-                }
+                } else
+                        continue;
+
+                found = true;
         }
 
-        r = dns_answer_size(answer) > 0;
+        r = found;
 
         if (ret) {
                 *ret = answer;