aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/dnsmasq/patches/0006-Fix-spurious-AD-flags-in-some-DNS-replies-from-local.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/dnsmasq/patches/0006-Fix-spurious-AD-flags-in-some-DNS-replies-from-local.patch')
-rw-r--r--package/network/services/dnsmasq/patches/0006-Fix-spurious-AD-flags-in-some-DNS-replies-from-local.patch120
1 files changed, 120 insertions, 0 deletions
diff --git a/package/network/services/dnsmasq/patches/0006-Fix-spurious-AD-flags-in-some-DNS-replies-from-local.patch b/package/network/services/dnsmasq/patches/0006-Fix-spurious-AD-flags-in-some-DNS-replies-from-local.patch
new file mode 100644
index 0000000000..3271a5f3af
--- /dev/null
+++ b/package/network/services/dnsmasq/patches/0006-Fix-spurious-AD-flags-in-some-DNS-replies-from-local.patch
@@ -0,0 +1,120 @@
+From 6f7812d97bc8f87004c0a5069c6c94c64af78106 Mon Sep 17 00:00:00 2001
+From: Simon Kelley <simon@thekelleys.org.uk>
+Date: Tue, 23 Oct 2018 23:54:44 +0100
+Subject: [PATCH 06/11] Fix spurious AD flags in some DNS replies from local
+ config.
+
+Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
+---
+ src/rfc1035.c | 42 ++++++++++++++++++++++++------------------
+ 1 file changed, 24 insertions(+), 18 deletions(-)
+
+--- a/src/rfc1035.c
++++ b/src/rfc1035.c
+@@ -1330,7 +1330,7 @@ size_t answer_request(struct dns_header
+ {
+ if (t->class == qclass && hostname_isequal(name, t->name))
+ {
+- ans = 1;
++ ans = 1, sec_data = 0;
+ if (!dryrun)
+ {
+ unsigned long ttl = daemon->local_ttl;
+@@ -1370,7 +1370,7 @@ size_t answer_request(struct dns_header
+ addr.addr.rcode.rcode = NOTIMP;
+ log_query(F_CONFIG | F_RCODE, name, &addr, NULL);
+ }
+- ans = 1;
++ ans = 1, sec_data = 0;
+ }
+ }
+ }
+@@ -1725,7 +1725,7 @@ size_t answer_request(struct dns_header
+ }
+ else if (is_name_synthetic(flag, name, &addr))
+ {
+- ans = 1;
++ ans = 1, sec_data = 0;
+ if (!dryrun)
+ {
+ log_query(F_FORWARD | F_CONFIG | flag, name, &addr, NULL);
+@@ -1763,25 +1763,27 @@ size_t answer_request(struct dns_header
+ for (rec = daemon->mxnames; rec; rec = rec->next)
+ if (!rec->issrv && hostname_isequal(name, rec->name))
+ {
+- ans = found = 1;
+- if (!dryrun)
+- {
+- int offset;
+- log_query(F_CONFIG | F_RRNAME, name, NULL, "<MX>");
+- if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl,
+- &offset, T_MX, C_IN, "sd", rec->weight, rec->target))
+- {
+- anscount++;
+- if (rec->target)
+- rec->offset = offset;
+- }
+- }
++ ans = found = 1;
++ sec_data = 0;
++ if (!dryrun)
++ {
++ int offset;
++ log_query(F_CONFIG | F_RRNAME, name, NULL, "<MX>");
++ if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl,
++ &offset, T_MX, C_IN, "sd", rec->weight, rec->target))
++ {
++ anscount++;
++ if (rec->target)
++ rec->offset = offset;
++ }
++ }
+ }
+
+ if (!found && (option_bool(OPT_SELFMX) || option_bool(OPT_LOCALMX)) &&
+ cache_find_by_name(NULL, name, now, F_HOSTS | F_DHCP | F_NO_RR))
+ {
+ ans = 1;
++ sec_data = 0;
+ if (!dryrun)
+ {
+ log_query(F_CONFIG | F_RRNAME, name, NULL, "<MX>");
+@@ -1802,6 +1804,7 @@ size_t answer_request(struct dns_header
+ if (rec->issrv && hostname_isequal(name, rec->name))
+ {
+ found = ans = 1;
++ sec_data = 0;
+ if (!dryrun)
+ {
+ int offset;
+@@ -1838,6 +1841,7 @@ size_t answer_request(struct dns_header
+ if (!found && option_bool(OPT_FILTER) && (qtype == T_SRV || (qtype == T_ANY && strchr(name, '_'))))
+ {
+ ans = 1;
++ sec_data = 0;
+ if (!dryrun)
+ log_query(F_CONFIG | F_NEG, name, NULL, NULL);
+ }
+@@ -1850,6 +1854,7 @@ size_t answer_request(struct dns_header
+ if (hostname_isequal(name, na->name))
+ {
+ ans = 1;
++ sec_data = 0;
+ if (!dryrun)
+ {
+ log_query(F_CONFIG | F_RRNAME, name, NULL, "<NAPTR>");
+@@ -1862,11 +1867,12 @@ size_t answer_request(struct dns_header
+ }
+
+ if (qtype == T_MAILB)
+- ans = 1, nxdomain = 1;
++ ans = 1, nxdomain = 1, sec_data = 0;
+
+ if (qtype == T_SOA && option_bool(OPT_FILTER))
+ {
+- ans = 1;
++ ans = 1;
++ sec_data = 0;
+ if (!dryrun)
+ log_query(F_CONFIG | F_NEG, name, &addr, NULL);
+ }