import UBI dnsmasq-2.79-26.el8_8.1
This commit is contained in:
parent
7d2efecdd7
commit
70671aa970
83
SOURCES/dnsmasq-2.85-serv_domain-rh2186481-2.patch
Normal file
83
SOURCES/dnsmasq-2.85-serv_domain-rh2186481-2.patch
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
From 312e9f812a6b2f5ca2c2db866ffed3a0b289b945 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||||
|
Date: Wed, 10 May 2023 12:57:17 +0200
|
||||||
|
Subject: [PATCH] fixup! Correct releasing of serv_domain
|
||||||
|
|
||||||
|
---
|
||||||
|
src/dnsmasq.h | 2 +-
|
||||||
|
src/network.c | 20 +++++++++++---------
|
||||||
|
2 files changed, 12 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
|
||||||
|
index e8a1320..711ffd3 100644
|
||||||
|
--- a/src/dnsmasq.h
|
||||||
|
+++ b/src/dnsmasq.h
|
||||||
|
@@ -1331,7 +1331,7 @@ int label_exception(int index, int family, struct all_addr *addr);
|
||||||
|
int fix_fd(int fd);
|
||||||
|
int tcp_interface(int fd, int af);
|
||||||
|
struct server_domain *server_domain_find_domain(const char *domain);
|
||||||
|
-struct server_domain *server_domain_new(struct server *serv);
|
||||||
|
+void server_domain_new(struct server *serv);
|
||||||
|
#ifdef HAVE_IPV6
|
||||||
|
int set_ipv6pktinfo(int fd);
|
||||||
|
#endif
|
||||||
|
diff --git a/src/network.c b/src/network.c
|
||||||
|
index b8d77fe..6faaad4 100644
|
||||||
|
--- a/src/network.c
|
||||||
|
+++ b/src/network.c
|
||||||
|
@@ -1544,6 +1544,7 @@ void add_update_server(int flags,
|
||||||
|
serv->addr = *addr;
|
||||||
|
if (source_addr)
|
||||||
|
serv->source_addr = *source_addr;
|
||||||
|
+ server_domain_new(serv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1571,14 +1572,20 @@ struct server_domain *server_domain_find_domain(const char *domain)
|
||||||
|
/**< Test structure has already set domain pointer.
|
||||||
|
*
|
||||||
|
* If not, create a new record. */
|
||||||
|
-struct server_domain *server_domain_new(struct server *serv)
|
||||||
|
+void server_domain_new(struct server *serv)
|
||||||
|
{
|
||||||
|
struct server_domain *sd;
|
||||||
|
+ const char *domain = server_get_domain(serv);
|
||||||
|
|
||||||
|
- if ((sd = whine_malloc(sizeof(struct server_domain))))
|
||||||
|
+ sd = server_domain_find_domain(domain);
|
||||||
|
+ if (sd)
|
||||||
|
{
|
||||||
|
- const char *domain = server_get_domain(serv);
|
||||||
|
+ serv->serv_domain = sd;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
+ if ((sd = whine_malloc(sizeof(struct server_domain))))
|
||||||
|
+ {
|
||||||
|
/* Ensure all serv->domain values have own record in server_domain.
|
||||||
|
* Add a new record. */
|
||||||
|
if (domain)
|
||||||
|
@@ -1592,7 +1599,6 @@ struct server_domain *server_domain_new(struct server *serv)
|
||||||
|
serv->serv_domain = sd;
|
||||||
|
daemon->server_domains = sd;
|
||||||
|
}
|
||||||
|
- return sd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**< Test structure has already set domain pointer.
|
||||||
|
@@ -1605,11 +1611,7 @@ static void server_domain_check(struct server *serv)
|
||||||
|
if (sd)
|
||||||
|
sd->flags &= (~SERV_MARK); /* found domain, mark active */
|
||||||
|
else
|
||||||
|
- {
|
||||||
|
- sd = server_domain_find_domain(serv->domain);
|
||||||
|
- if (!sd)
|
||||||
|
- server_domain_new(serv);
|
||||||
|
- }
|
||||||
|
+ server_domain_new(serv);
|
||||||
|
}
|
||||||
|
|
||||||
|
void check_servers(void)
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
108
SOURCES/dnsmasq-2.85-serv_domain-rh2186481.patch
Normal file
108
SOURCES/dnsmasq-2.85-serv_domain-rh2186481.patch
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
From c0e0202736f55195104dad9fec98c20d0d15df21 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||||
|
Date: Fri, 21 Apr 2023 17:04:53 +0200
|
||||||
|
Subject: [PATCH] Correct releasing of serv_domain
|
||||||
|
|
||||||
|
In case the server->serv_domain points to domain also when it is not the
|
||||||
|
last server used, ensure the reference to last_server is always reset.
|
||||||
|
Some records might reference the server_domain, but cannot ever become
|
||||||
|
last_server. Such as server=/example.com/#
|
||||||
|
|
||||||
|
Correct detection of used server_domains for standard resolvers case.
|
||||||
|
Mark domain used even in that case, so it is not freed during
|
||||||
|
resolv.conf reading or other nameservers change.
|
||||||
|
---
|
||||||
|
src/network.c | 40 +++++++++++++++++++++++++++++++---------
|
||||||
|
1 file changed, 31 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/network.c b/src/network.c
|
||||||
|
index cf2f2e2..8152cac 100644
|
||||||
|
--- a/src/network.c
|
||||||
|
+++ b/src/network.c
|
||||||
|
@@ -1511,7 +1511,18 @@ void mark_servers(int flag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void server_domains_cleanup(void)
|
||||||
|
+static void server_domains_pre_cleanup(void)
|
||||||
|
+{
|
||||||
|
+ struct server_domain *sd;
|
||||||
|
+
|
||||||
|
+ /* reset removed last_server. */
|
||||||
|
+ for (sd = daemon->server_domains; sd; sd = sd->next)
|
||||||
|
+ if ((sd->flags & SERV_MARK) == 0 && sd->last_server &&
|
||||||
|
+ (sd->last_server->flags & SERV_MARK) != 0)
|
||||||
|
+ sd->last_server = NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void server_domains_post_cleanup(void)
|
||||||
|
{
|
||||||
|
struct server_domain *sd, *tmp, **up;
|
||||||
|
|
||||||
|
@@ -1528,8 +1539,6 @@ static void server_domains_cleanup(void)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
up = &sd->next;
|
||||||
|
- if (sd->last_server && (sd->last_server->flags & SERV_MARK))
|
||||||
|
- sd->last_server = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1538,7 +1547,7 @@ void cleanup_servers(void)
|
||||||
|
{
|
||||||
|
struct server *serv, *tmp, **up;
|
||||||
|
|
||||||
|
- server_domains_cleanup();
|
||||||
|
+ server_domains_pre_cleanup();
|
||||||
|
|
||||||
|
/* unlink and free anything still marked. */
|
||||||
|
for (serv = daemon->servers, up = &daemon->servers; serv; serv = tmp)
|
||||||
|
@@ -1552,10 +1561,16 @@ void cleanup_servers(void)
|
||||||
|
free(serv->domain);
|
||||||
|
free(serv);
|
||||||
|
}
|
||||||
|
- else
|
||||||
|
- up = &serv->next;
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ up = &serv->next;
|
||||||
|
+ if (serv->serv_domain && (serv->serv_domain->flags & SERV_MARK) != 0)
|
||||||
|
+ serv->serv_domain = NULL;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
+ server_domains_post_cleanup();
|
||||||
|
+
|
||||||
|
#ifdef HAVE_LOOP
|
||||||
|
/* Now we have a new set of servers, test for loops. */
|
||||||
|
loop_send_probes();
|
||||||
|
@@ -1699,7 +1714,11 @@ static void server_domain_check(struct server *serv)
|
||||||
|
if (sd)
|
||||||
|
sd->flags &= (~SERV_MARK); /* found domain, mark active */
|
||||||
|
else
|
||||||
|
- server_domain_new(serv);
|
||||||
|
+ {
|
||||||
|
+ sd = server_domain_find_domain(serv->domain);
|
||||||
|
+ if (!sd)
|
||||||
|
+ server_domain_new(serv);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
void check_servers(void)
|
||||||
|
@@ -1808,8 +1827,11 @@ void check_servers(void)
|
||||||
|
else if (strlen(serv->domain) == 0)
|
||||||
|
s1 = _("default"), s2 = "";
|
||||||
|
else
|
||||||
|
- s1 = _("domain"), s2 = serv->domain;
|
||||||
|
-
|
||||||
|
+ {
|
||||||
|
+ s1 = _("domain"), s2 = serv->domain;
|
||||||
|
+ server_domain_check(serv);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (serv->flags & SERV_NO_ADDR)
|
||||||
|
{
|
||||||
|
count--;
|
||||||
|
--
|
||||||
|
2.39.2
|
||||||
|
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
Name: dnsmasq
|
Name: dnsmasq
|
||||||
Version: 2.79
|
Version: 2.79
|
||||||
Release: 26%{?extraversion:.%{extraversion}}%{?dist}
|
Release: 26%{?extraversion:.%{extraversion}}%{?dist}.1
|
||||||
Summary: A lightweight DHCP/caching DNS server
|
Summary: A lightweight DHCP/caching DNS server
|
||||||
|
|
||||||
License: GPLv2 or GPLv3
|
License: GPLv2 or GPLv3
|
||||||
@ -83,6 +83,12 @@ Patch37: dnsmasq-2.81-linux-SIOCGSTAMP.patch
|
|||||||
Patch38: dnsmasq-2.79-server-domain-fixup.patch
|
Patch38: dnsmasq-2.79-server-domain-fixup.patch
|
||||||
# https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;h=f8c77edbdffb8ada7753ea9fa104f0f6da70cfe3
|
# https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;h=f8c77edbdffb8ada7753ea9fa104f0f6da70cfe3
|
||||||
Patch39: dnsmasq-2.81-dhcpv6-relay-link-address.patch
|
Patch39: dnsmasq-2.81-dhcpv6-relay-link-address.patch
|
||||||
|
# Downstream only patch; https://bugzilla.redhat.com/show_bug.cgi?id=2186481
|
||||||
|
# Fixes issue in Patch4
|
||||||
|
Patch41: dnsmasq-2.85-serv_domain-rh2186481.patch
|
||||||
|
# Downstream only patch; https://bugzilla.redhat.com/show_bug.cgi?id=2186481
|
||||||
|
# complements patch10
|
||||||
|
Patch42: dnsmasq-2.85-serv_domain-rh2186481-2.patch
|
||||||
|
|
||||||
# This is workaround to nettle bug #1549190
|
# This is workaround to nettle bug #1549190
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1549190
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1549190
|
||||||
@ -155,6 +161,8 @@ server's leases.
|
|||||||
%patch37 -p1 -b .SIOCGSTAMP
|
%patch37 -p1 -b .SIOCGSTAMP
|
||||||
%patch38 -p1 -b .rh2120357
|
%patch38 -p1 -b .rh2120357
|
||||||
%patch39 -p1 -b .rh2169355
|
%patch39 -p1 -b .rh2169355
|
||||||
|
%patch41 -p1 -b .rh2186481
|
||||||
|
%patch42 -p1 -b .rh2186481-2
|
||||||
|
|
||||||
# use /var/lib/dnsmasq instead of /var/lib/misc
|
# use /var/lib/dnsmasq instead of /var/lib/misc
|
||||||
for file in dnsmasq.conf.example man/dnsmasq.8 man/es/dnsmasq.8 src/config.h; do
|
for file in dnsmasq.conf.example man/dnsmasq.8 man/es/dnsmasq.8 src/config.h; do
|
||||||
@ -254,6 +262,10 @@ install -Dpm 644 %{SOURCE2} %{buildroot}%{_sysusersdir}/dnsmasq.conf
|
|||||||
%{_mandir}/man1/dhcp_*
|
%{_mandir}/man1/dhcp_*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 21 2023 Petr Menšík <pemensik@redhat.com> - 2.79-26.1
|
||||||
|
- Correct possible crashes when server=/example.net/# is used (#2186481)
|
||||||
|
- Fix also dynamically set resolvers over dbus (#2186481)
|
||||||
|
|
||||||
* Wed Feb 15 2023 Petr Menšík <pemensik@redhat.com> - 2.79-26
|
* Wed Feb 15 2023 Petr Menšík <pemensik@redhat.com> - 2.79-26
|
||||||
- Avoid DHCPv6 relayed replies with Client Link-Layer Address (#2169355)
|
- Avoid DHCPv6 relayed replies with Client Link-Layer Address (#2169355)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user