mirror of
https://git.yoctoproject.org/poky
synced 2026-07-25 06:47:01 +00:00
dhcpcd: patch CVE-2026-56113
Backport patch [1] mentionned in [2] [1] https://github.com/NetworkConfiguration/dhcpcd/commit/5733d3c59a5651f64357ac11c98b4f39895c8d25 [2] https://security-tracker.debian.org/tracker/CVE-2026-56113 (From OE-Core rev: fbfee67ed5d0c799bc1011f8463741c3b0910885) Signed-off-by: Theo Gaige (Schneider Electric) <tgaige.opensource@witekio.com> Signed-off-by: Yoann Congal <yoann.congal@smile.fr> Signed-off-by: Paul Barker <paul@pbarker.dev>
This commit is contained in:
committed by
Paul Barker
parent
37b718ecb9
commit
c223541984
@@ -15,6 +15,7 @@ SRC_URI = "git://github.com/NetworkConfiguration/dhcpcd;protocol=https;branch=ma
|
||||
file://dhcpcd.service \
|
||||
file://dhcpcd@.service \
|
||||
file://0001-dhcpcd.8-Fix-conflict-error-when-enable-multilib.patch \
|
||||
file://CVE-2026-56113.patch \
|
||||
"
|
||||
|
||||
SRCREV = "1c8ae59836fa87b4c63c598087f0460ec20ed862"
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
From 9f953ada0df6e7a568f006f3ae0ff10a77a95924 Mon Sep 17 00:00:00 2001
|
||||
From: Roy Marples <roy@marples.name>
|
||||
Date: Tue, 23 Jun 2026 02:17:10 +0100
|
||||
Subject: [PATCH] DHCPv6: When deprecating addresses, restart on prefix
|
||||
deletions
|
||||
|
||||
As that might invalidate the next address to iterate on.
|
||||
|
||||
Reported-by: CuB3y0nd <root@cubeyond.net>
|
||||
|
||||
(cherry picked from commit 5733d3c59a5651f64357ac11c98b4f39895c8d25)
|
||||
|
||||
CVE: CVE-2026-56113
|
||||
Upstream-Status: Backport [https://github.com/NetworkConfiguration/dhcpcd/commit/5733d3c59a5651f64357ac11c98b4f39895c8d25]
|
||||
Signed-off-by: Theo Gaige (Schneider Electric) <tgaige.opensource@witekio.com>
|
||||
---
|
||||
src/dhcp6.c | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/dhcp6.c b/src/dhcp6.c
|
||||
index bdc3664e..5154bf41 100644
|
||||
--- a/src/dhcp6.c
|
||||
+++ b/src/dhcp6.c
|
||||
@@ -2480,12 +2480,13 @@ dhcp6_findia(struct interface *ifp, struct dhcp6_message *m, size_t l,
|
||||
}
|
||||
|
||||
#ifndef SMALL
|
||||
-static void
|
||||
+static bool
|
||||
dhcp6_deprecatedele(struct ipv6_addr *ia)
|
||||
{
|
||||
struct ipv6_addr *da, *dan, *dda;
|
||||
struct timespec now;
|
||||
struct dhcp6_state *state;
|
||||
+ bool freed = false;
|
||||
|
||||
timespecclear(&now);
|
||||
TAILQ_FOREACH_SAFE(da, &ia->pd_pfxs, pd_next, dan) {
|
||||
@@ -2511,11 +2512,14 @@ dhcp6_deprecatedele(struct ipv6_addr *ia)
|
||||
if (IN6_ARE_ADDR_EQUAL(&dda->addr, &da->addr))
|
||||
break;
|
||||
}
|
||||
- if (dda != NULL) {
|
||||
+ if (dda != ia && dda != NULL) {
|
||||
TAILQ_REMOVE(&state->addrs, dda, next);
|
||||
ipv6_freeaddr(dda);
|
||||
+ freed = true;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ return freed;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2523,7 +2527,11 @@ static void
|
||||
dhcp6_deprecateaddrs(struct ipv6_addrhead *addrs)
|
||||
{
|
||||
struct ipv6_addr *ia, *ian;
|
||||
+#ifndef SMALL
|
||||
+ bool again;
|
||||
+#endif
|
||||
|
||||
+again:
|
||||
TAILQ_FOREACH_SAFE(ia, addrs, next, ian) {
|
||||
if (ia->flags & IPV6_AF_EXTENDED)
|
||||
;
|
||||
@@ -2545,7 +2553,9 @@ dhcp6_deprecateaddrs(struct ipv6_addrhead *addrs)
|
||||
/* If we delegated from this prefix, deprecate or remove
|
||||
* the delegations. */
|
||||
if (ia->flags & IPV6_AF_DELEGATEDPFX)
|
||||
- dhcp6_deprecatedele(ia);
|
||||
+ again = dhcp6_deprecatedele(ia);
|
||||
+ else
|
||||
+ again = false;
|
||||
#endif
|
||||
|
||||
if (ia->flags & IPV6_AF_REQUEST) {
|
||||
@@ -2558,6 +2568,11 @@ dhcp6_deprecateaddrs(struct ipv6_addrhead *addrs)
|
||||
if (ia->flags & IPV6_AF_EXTENDED)
|
||||
ipv6_deleteaddr(ia);
|
||||
ipv6_freeaddr(ia);
|
||||
+#ifndef SMALL
|
||||
+ /* Deletion may invalidate the next pointer so restart */
|
||||
+ if (again)
|
||||
+ goto again;
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
||||
Reference in New Issue
Block a user