Package: release.debian.org
Severity: normal
Tags: bookworm
X-Debbugs-Cc: [email protected], [email protected]
Control: affects -1 + src:dhcpcd
User: [email protected]
Usertags: pu
[ Reason ]
Backporting fixes for 2 minor CVEs reported by DSA yesterday.
CVE-2025-70102 was fixed in 10.3.1 (Sid has 10.3.2) but never backported until
now.
Meanwhile, the fix for CVE-2026-56114 has long been sitting in upstream Git.
Both patches have been applied to Sid/Forky pending a new upstream release.
Also both patches have been applied to Trixie (see similar trixie-pu bug).
[ Impact ]
Minor.
[ Tests ]
Verified to boot on a host running Bookworm.
[ Risks ]
Minor. Both patches are one-line fixes.
[ Checklist ]
[*] *all* changes are documented in the d/changelog
[*] I reviewed all changes and I approve them
[*] attach debdiff against the package in (old)stable
[*] the issue is verified as fixed in unstable
[ Changes ]
dhcpcd5 (9.4.1-24~deb12u5) bookworm; urgency=medium
.
* [control]
= Migrate Build-Depends from pkg-config to pkgconf.
* [salsa-ci.yml]
+ Implement basic CI support using the stock Debian pipeline include.
* [patches] (Closes: #1140767)
+ Cherry-pick upstream fix for CVE-2025-70102 (commit 117742d).
+ Cherry-pick upstream fix for CVE-2026-56114 (commit 2f00c7b).
= Refresh all patches.
diff --git a/debian/changelog b/debian/changelog
index fe291ccb..96f007ea 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+dhcpcd5 (9.4.1-24~deb12u5) bookworm; urgency=medium
+
+ * [control]
+ = Migrate Build-Depends from pkg-config to pkgconf.
+ * [salsa-ci.yml]
+ + Implement basic CI support using the stock Debian pipeline include.
+ * [patches] (Closes: #1140767)
+ + Cherry-pick upstream fix for CVE-2025-70102 (commit 117742d).
+ + Cherry-pick upstream fix for CVE-2026-56114 (commit 2f00c7b).
+ = Refresh all patches.
+
+ -- Martin-Éric Racine <[email protected]> Sun, 28 Jun 2026 12:02:44
+0300
+
dhcpcd5 (9.4.1-24~deb12u4) bookworm; urgency=medium
* Add --no-stop-on-upgrade --no-restart-after-upgrade (Closes: #1057959).
diff --git a/debian/control b/debian/control
index fdfc87a6..172998bb 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Homepage: https://roy.marples.name/projects/dhcpcd
Maintainer: Martin-Éric Racine <[email protected]>
Build-Depends: debhelper-compat (= 13),
libudev-dev [linux-any],
- pkg-config
+ pkgconf
Rules-Requires-Root: no
Standards-Version: 4.6.2
Vcs-Browser: https://salsa.debian.org/debian/dhcpcd
diff --git a/debian/patches/0001_typo-in-manual-page.patch
b/debian/patches/0001_typo-in-manual-page.patch
index 6336b9af..a074ef2e 100644
--- a/debian/patches/0001_typo-in-manual-page.patch
+++ b/debian/patches/0001_typo-in-manual-page.patch
@@ -6,9 +6,9 @@ Origin: Debian
Forwarded: yes
Last-Update: 2022-02-22
---- dhcpcd5-9.4.1.orig/hooks/dhcpcd-run-hooks.8.in
-+++ dhcpcd5-9.4.1/hooks/dhcpcd-run-hooks.8.in
-@@ -94,7 +94,7 @@ dhcpcd lost the carrier.
+--- a/hooks/dhcpcd-run-hooks.8.in
++++ b/hooks/dhcpcd-run-hooks.8.in
+@@ -94,7 +94,7 @@
The cable may have been unplugged or association to the wireless point lost.
.It Dv NOCARRIER_ROAMING
dhcpcd lost the carrier but the interface configuration is persisted.
@@ -17,9 +17,9 @@ Last-Update: 2022-02-22
.It Dv INFORM | Dv INFORM6
dhcpcd informed a DHCP server about its address and obtained other
configuration details.
---- dhcpcd5-9.4.1.orig/src/dhcpcd.8.in
-+++ dhcpcd5-9.4.1/src/dhcpcd.8.in
-@@ -267,7 +267,7 @@ instead of the default
+--- a/src/dhcpcd.8.in
++++ b/src/dhcpcd.8.in
+@@ -267,7 +267,7 @@
.It Fl D , Fl Fl duid Op Ar ll | lt | uuid | value
Use a DHCP Unique Identifier.
If a system UUID is available, that will be used to create a DUID-UUID,
@@ -28,7 +28,7 @@ Last-Update: 2022-02-22
(link local address + time) is generated,
otherwise DUID-LL is generated (link local address).
The DUID type can be hinted as an optional parameter if the file
-@@ -671,7 +671,7 @@ from the DHCP message before processing.
+@@ -671,7 +671,7 @@
Print the
.Pa pidfile
.Nm
@@ -37,9 +37,9 @@ Last-Update: 2022-02-22
.It Fl Q , Fl Fl require Ar option
Requires the
.Ar option
---- dhcpcd5-9.4.1.orig/src/dhcpcd.conf.5.in
-+++ dhcpcd5-9.4.1/src/dhcpcd.conf.5.in
-@@ -216,7 +216,7 @@ of the hardware family and the hardware
+--- a/src/dhcpcd.conf.5.in
++++ b/src/dhcpcd.conf.5.in
+@@ -216,7 +216,7 @@
.It Ic duid Op ll | lt | uuid | value
Use a DHCP Unique Identifier.
If a system UUID is available, that will be used to create a DUID-UUID,
diff --git a/debian/patches/0002_type_to_command-v.patch
b/debian/patches/0002_type_to_command-v.patch
index 0153dcff..d1aa06c1 100644
--- a/debian/patches/0002_type_to_command-v.patch
+++ b/debian/patches/0002_type_to_command-v.patch
@@ -13,11 +13,9 @@ command -v is now required by POSIX, type is technically an
extension.
hooks/dhcpcd-run-hooks.in | 10 +++++-----
6 files changed, 14 insertions(+), 14 deletions(-)
-diff --git a/hooks/10-wpa_supplicant b/hooks/10-wpa_supplicant
-index 04acce08..1da0108d 100644
--- a/hooks/10-wpa_supplicant
+++ b/hooks/10-wpa_supplicant
-@@ -102,8 +102,8 @@ wpa_supplicant_stop()
+@@ -102,8 +102,8 @@
}
if [ "$ifwireless" = "1" ] && \
@@ -28,11 +26,9 @@ index 04acce08..1da0108d 100644
then
case "$reason" in
PREINIT) wpa_supplicant_start;;
-diff --git a/hooks/20-resolv.conf b/hooks/20-resolv.conf
-index 504a6c53..7c29e276 100644
--- a/hooks/20-resolv.conf
+++ b/hooks/20-resolv.conf
-@@ -11,7 +11,7 @@ nocarrier_roaming_dir="$state_dir/roaming"
+@@ -11,7 +11,7 @@
NL="
"
: ${resolvconf:=resolvconf}
@@ -41,11 +37,9 @@ index 504a6c53..7c29e276 100644
have_resolvconf=true
else
have_resolvconf=false
-diff --git a/hooks/29-lookup-hostname b/hooks/29-lookup-hostname
-index 811c7a9c..a1540dd9 100644
--- a/hooks/29-lookup-hostname
+++ b/hooks/29-lookup-hostname
-@@ -4,20 +4,20 @@ lookup_hostname()
+@@ -4,20 +4,20 @@
{
[ -z "$new_ip_address" ] && return 1
# Silly ISC programs love to send error text to stdout
@@ -69,11 +63,9 @@ index 811c7a9c..a1540dd9 100644
h=$(getent hosts $new_ip_address)
if [ $? = 0 ]; then
echo "$h" | sed 's/[^ ]* *\([^ ]*\).*/\1/'
-diff --git a/hooks/30-hostname.in b/hooks/30-hostname.in
-index abeb3696..b0a37576 100644
--- a/hooks/30-hostname.in
+++ b/hooks/30-hostname.in
-@@ -25,7 +25,7 @@ _hostname()
+@@ -25,7 +25,7 @@
if [ -z "${1+x}" ]; then
if [ -r /proc/sys/kernel/hostname ]; then
read name </proc/sys/kernel/hostname && echo "$name"
@@ -82,7 +74,7 @@ index abeb3696..b0a37576 100644
hostname
elif sysctl kern.hostname >/dev/null 2>&1; then
sysctl -n kern.hostname
-@@ -39,7 +39,7 @@ _hostname()
+@@ -39,7 +39,7 @@
if [ -w /proc/sys/kernel/hostname ]; then
echo "$1" >/proc/sys/kernel/hostname
@@ -91,11 +83,9 @@ index abeb3696..b0a37576 100644
hostname "$1"
elif sysctl kern.hostname >/dev/null 2>&1; then
sysctl -w "kern.hostname=$1" >/dev/null
-diff --git a/hooks/50-ntp.conf b/hooks/50-ntp.conf
-index 046ab6b3..767e8360 100644
--- a/hooks/50-ntp.conf
+++ b/hooks/50-ntp.conf
-@@ -43,7 +43,7 @@ fi
+@@ -43,7 +43,7 @@
# Debian has a separate file for DHCP config to avoid stamping on
# the master.
@@ -104,11 +94,9 @@ index 046ab6b3..767e8360 100644
[ -e /var/lib/ntp ] || mkdir /var/lib/ntp
: ${ntp_service:=ntp}
: ${NTP_DHCP_CONF:=/var/lib/ntp/ntp.conf.dhcp}
-diff --git a/hooks/dhcpcd-run-hooks.in b/hooks/dhcpcd-run-hooks.in
-index a237f6af..c858da3b 100644
--- a/hooks/dhcpcd-run-hooks.in
+++ b/hooks/dhcpcd-run-hooks.in
-@@ -67,7 +67,7 @@ key_get_value()
+@@ -67,7 +67,7 @@
key="$1"
shift
@@ -117,7 +105,7 @@ index a237f6af..c858da3b 100644
sed -n "s/^$key//p" $@
else
for x do
-@@ -89,7 +89,7 @@ remove_markers()
+@@ -89,7 +89,7 @@
in_marker=0
shift; shift
@@ -126,7 +114,7 @@ index a237f6af..c858da3b 100644
sed "/^$m1/,/^$m2/d" $@
else
for x do
-@@ -109,9 +109,9 @@ comp_file()
+@@ -109,9 +109,9 @@
{
[ -e "$1" ] && [ -e "$2" ] || return 1
@@ -138,7 +126,7 @@ index a237f6af..c858da3b 100644
diff -q "$1" "$2" >/dev/null
else
# Hopefully we're only working on small text files ...
-@@ -178,7 +178,7 @@ syslog()
+@@ -178,7 +178,7 @@
err|error) echo "$interface: $*" >&2;;
*) echo "$interface: $*";;
esac
diff --git a/debian/patches/0003_RFC4862_minimum_lft.patch
b/debian/patches/0003_RFC4862_minimum_lft.patch
index 826ba3cf..123fcbfe 100644
--- a/debian/patches/0003_RFC4862_minimum_lft.patch
+++ b/debian/patches/0003_RFC4862_minimum_lft.patch
@@ -18,11 +18,9 @@ Subject: [PATCH] inet6: Support RFC 4862 5.5.3.e in regards
to Valid Lifetime
src/ipv6nd.h | 2 ++
2 files changed, 63 insertions(+), 11 deletions(-)
-diff --git a/src/ipv6nd.c b/src/ipv6nd.c
-index 4b9c735d..94ffebd4 100644
--- a/src/ipv6nd.c
+++ b/src/ipv6nd.c
-@@ -1314,6 +1314,9 @@ ipv6nd_handlera(struct dhcpcd_ctx *ctx,
+@@ -1306,6 +1306,9 @@
switch (ndo.nd_opt_type) {
case ND_OPT_PREFIX_INFORMATION:
@@ -32,7 +30,7 @@ index 4b9c735d..94ffebd4 100644
loglevel = new_data ? LOG_ERR : LOG_DEBUG;
if (ndo.nd_opt_len != 4) {
logmessage(loglevel,
-@@ -1337,9 +1340,10 @@ ipv6nd_handlera(struct dhcpcd_ctx *ctx,
+@@ -1329,9 +1332,10 @@
ifp->name);
continue;
}
@@ -46,7 +44,7 @@ index 4b9c735d..94ffebd4 100644
logmessage(loglevel, "%s: pltime > vltime",
ifp->name);
continue;
-@@ -1364,10 +1368,15 @@ ipv6nd_handlera(struct dhcpcd_ctx *ctx,
+@@ -1356,10 +1360,15 @@
&pi_prefix, pi.nd_opt_pi_prefix_len, flags);
if (ia == NULL)
break;
@@ -63,7 +61,7 @@ index 4b9c735d..94ffebd4 100644
TAILQ_INSERT_TAIL(&rap->addrs, ia, next);
#ifdef IPV6_MANAGETEMPADDR
-@@ -1384,18 +1393,58 @@ ipv6nd_handlera(struct dhcpcd_ctx *ctx,
+@@ -1376,18 +1385,58 @@
else
new_ia = true;
#endif
@@ -129,7 +127,7 @@ index 4b9c735d..94ffebd4 100644
if (ia->prefix_vltime != 0 &&
ia->flags & IPV6_AF_AUTOCONF)
has_address = true;
-@@ -1418,6 +1467,7 @@ ipv6nd_handlera(struct dhcpcd_ctx *ctx,
+@@ -1410,6 +1459,7 @@
}
#endif
break;
@@ -137,11 +135,9 @@ index 4b9c735d..94ffebd4 100644
case ND_OPT_MTU:
if (len < sizeof(mtu)) {
-diff --git a/src/ipv6nd.h b/src/ipv6nd.h
-index fd5990cf..2efc3536 100644
--- a/src/ipv6nd.h
+++ b/src/ipv6nd.h
-@@ -98,6 +98,8 @@ struct rs_state {
+@@ -98,6 +98,8 @@
#define RETRANS_TIMER 1000 /* milliseconds */
#define DELAY_FIRST_PROBE_TIME 5 /* seconds */
diff --git a/debian/patches/0005_fix_configure_prefix.patch
b/debian/patches/0005_fix_configure_prefix.patch
index 46aa809b..1b1fc960 100644
--- a/debian/patches/0005_fix_configure_prefix.patch
+++ b/debian/patches/0005_fix_configure_prefix.patch
@@ -9,11 +9,9 @@ Fixes #139
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/configure b/configure
-index 8ff66a1a..daee6df9 100755
--- a/configure
+++ b/configure
-@@ -71,7 +71,7 @@ for x do
+@@ -71,7 +71,7 @@
--disable-privsep) PRIVSEP=no;;
--enable-privsep) PRIVSEP=yes;;
--privsepuser) PRIVSEP_USER=$var;;
diff --git a/debian/patches/0006_skip_hooks_with_tilde.patch
b/debian/patches/0006_skip_hooks_with_tilde.patch
index 3216f597..ca0a24ee 100644
--- a/debian/patches/0006_skip_hooks_with_tilde.patch
+++ b/debian/patches/0006_skip_hooks_with_tilde.patch
@@ -11,11 +11,9 @@ appears to be the intent of this code.
hooks/dhcpcd-run-hooks.in | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/hooks/dhcpcd-run-hooks.in b/hooks/dhcpcd-run-hooks.in
-index c858da3b..b0dc2ea5 100644
--- a/hooks/dhcpcd-run-hooks.in
+++ b/hooks/dhcpcd-run-hooks.in
-@@ -338,9 +338,11 @@ for hook in \
+@@ -338,9 +338,11 @@
@HOOKDIR@/* \
@SYSCONFDIR@/dhcpcd.exit-hook
do
diff --git a/debian/patches/0007_set_buffer_lenght_to_0.patch
b/debian/patches/0007_set_buffer_lenght_to_0.patch
index b68e907a..217d8c57 100644
--- a/debian/patches/0007_set_buffer_lenght_to_0.patch
+++ b/debian/patches/0007_set_buffer_lenght_to_0.patch
@@ -9,11 +9,9 @@ Fixes #156.
src/dhcp.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/src/dhcp.c b/src/dhcp.c
-index ce3b87c8..c7154634 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
-@@ -3833,6 +3833,7 @@ dhcp_free(struct interface *ifp)
+@@ -3833,6 +3833,7 @@
free(ctx->opt_buffer);
ctx->opt_buffer = NULL;
diff --git a/debian/patches/0008_fix_incorrect_assert.patch
b/debian/patches/0008_fix_incorrect_assert.patch
index 60336a0b..66f3fcdf 100644
--- a/debian/patches/0008_fix_incorrect_assert.patch
+++ b/debian/patches/0008_fix_incorrect_assert.patch
@@ -8,11 +8,9 @@ Fix incorrect CTASSERT in ND_OPT_DNSSL
src/ipv6nd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/src/ipv6nd.c b/src/ipv6nd.c
-index 24274790..906bb93e 100644
--- a/src/ipv6nd.c
+++ b/src/ipv6nd.c
-@@ -92,7 +92,7 @@ struct nd_opt_dnssl { /* DNSSL option RFC
6106 */
+@@ -92,7 +92,7 @@
uint32_t nd_opt_dnssl_lifetime;
/* followed by list of DNS servers */
};
diff --git a/debian/patches/0009_allow_newfstatat_syscall.patch
b/debian/patches/0009_allow_newfstatat_syscall.patch
index 93f6d1b8..842798f9 100644
--- a/debian/patches/0009_allow_newfstatat_syscall.patch
+++ b/debian/patches/0009_allow_newfstatat_syscall.patch
@@ -9,11 +9,9 @@ As reported in #84 and #89.
src/privsep-linux.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/src/privsep-linux.c b/src/privsep-linux.c
-index 4d5c195d..66aeb490 100644
--- a/src/privsep-linux.c
+++ b/src/privsep-linux.c
-@@ -353,6 +353,9 @@ static struct sock_filter ps_seccomp_filter[] = {
+@@ -325,6 +325,9 @@
#ifdef __NR_nanosleep
SECCOMP_ALLOW(__NR_nanosleep), /* XXX should use ppoll instead */
#endif
diff --git a/debian/patches/0010_miss_seccomp_on_ppc64el.patch
b/debian/patches/0010_miss_seccomp_on_ppc64el.patch
index 969a1914..30432bfe 100644
--- a/debian/patches/0010_miss_seccomp_on_ppc64el.patch
+++ b/debian/patches/0010_miss_seccomp_on_ppc64el.patch
@@ -10,11 +10,9 @@ Signed-off-by: Xiangyu Chen <[email protected]>
src/privsep-linux.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/src/privsep-linux.c b/src/privsep-linux.c
-index 7372d26b..6a301950 100644
--- a/src/privsep-linux.c
+++ b/src/privsep-linux.c
-@@ -232,7 +232,11 @@ ps_root_sendnetlink(struct dhcpcd_ctx *ctx, int protocol,
struct msghdr *msg)
+@@ -213,7 +213,11 @@
#elif defined(__or1k__)
# define SECCOMP_AUDIT_ARCH AUDIT_ARCH_OPENRISC
#elif defined(__powerpc64__)
diff --git a/debian/patches/117742d755b591764036dd4218f314f748a3d2b7.patch
b/debian/patches/117742d755b591764036dd4218f314f748a3d2b7.patch
new file mode 100644
index 00000000..c149b0f3
--- /dev/null
+++ b/debian/patches/117742d755b591764036dd4218f314f748a3d2b7.patch
@@ -0,0 +1,26 @@
+From 117742d755b591764036dd4218f314f748a3d2b7 Mon Sep 17 00:00:00 2001
+From: Roy Marples <[email protected]>
+Date: Sun, 21 Dec 2025 08:31:52 +0000
+Subject: [PATCH] options: Ensure ldop is not NULL dereferenced (#568)
+
+ldop itself cannot be non NULL as it points to the location.
+but *ldop CAN be NULL.
+
+Fixes: CVE-2025-70102
+
+Fixes #567.
+---
+ src/if-options.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/if-options.c
++++ b/src/if-options.c
+@@ -1666,7 +1666,7 @@
+ if (*edop) {
+ dop = &(*edop)->embopts;
+ dop_len = &(*edop)->embopts_len;
+- } else if (ldop) {
++ } else if (*ldop) {
+ dop = &(*ldop)->embopts;
+ dop_len = &(*ldop)->embopts_len;
+ } else {
diff --git a/debian/patches/2f00c7bfc408b6582d331932dfa47829c4819029.patch
b/debian/patches/2f00c7bfc408b6582d331932dfa47829c4819029.patch
new file mode 100644
index 00000000..ea29e4fe
--- /dev/null
+++ b/debian/patches/2f00c7bfc408b6582d331932dfa47829c4819029.patch
@@ -0,0 +1,25 @@
+From 2f00c7bfc408b6582d331932dfa47829c4819029 Mon Sep 17 00:00:00 2001
+From: Roy Marples <[email protected]>
+Date: Tue, 23 Jun 2026 02:06:55 +0100
+Subject: [PATCH] DHCPv6: Prefix exclude option can be 17 octets (#671)
+
+Well that's a simple off by one error.
+
+Fixes: CVE-2026-56114
+
+Reported-by: CuB3y0nd <[email protected]>
+---
+ src/dhcp6.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/dhcp6.c
++++ b/src/dhcp6.c
+@@ -993,7 +993,7 @@
+
+ /* RFC6603 Section 4.2 */
+ if (ap->prefix_exclude_len) {
+- uint8_t exb[16], *ep, u8;
++ uint8_t exb[17], *ep, u8;
+ const uint8_t *pp;
+
+ n = (size_t)((ap->prefix_exclude_len -
diff --git a/debian/patches/53e2f6de4ba87d0534c89cae674e6c1a48724ef0.patch
b/debian/patches/53e2f6de4ba87d0534c89cae674e6c1a48724ef0.patch
index c9869176..0065586d 100644
--- a/debian/patches/53e2f6de4ba87d0534c89cae674e6c1a48724ef0.patch
+++ b/debian/patches/53e2f6de4ba87d0534c89cae674e6c1a48724ef0.patch
@@ -11,11 +11,9 @@ Fix for #179.
src/privsep.h | 2 +-
3 files changed, 10 insertions(+), 19 deletions(-)
-diff --git a/src/privsep-inet.c b/src/privsep-inet.c
-index 3a192ee0..7f7494f6 100644
--- a/src/privsep-inet.c
+++ b/src/privsep-inet.c
-@@ -53,7 +53,7 @@ ps_inet_recvbootp(void *arg)
+@@ -53,7 +53,7 @@
{
struct dhcpcd_ctx *ctx = arg;
@@ -24,7 +22,7 @@ index 3a192ee0..7f7494f6 100644
logerr(__func__);
}
#endif
-@@ -67,12 +67,12 @@ ps_inet_recvra(void *arg)
+@@ -67,12 +67,12 @@
struct rs_state *state = RS_STATE(ifp);
struct dhcpcd_ctx *ctx = ifp->ctx;
@@ -39,7 +37,7 @@ index 3a192ee0..7f7494f6 100644
logerr(__func__);
#endif
}
-@@ -84,7 +84,7 @@ ps_inet_recvdhcp6(void *arg)
+@@ -84,7 +84,7 @@
{
struct dhcpcd_ctx *ctx = arg;
@@ -48,7 +46,7 @@ index 3a192ee0..7f7494f6 100644
logerr(__func__);
}
#endif
-@@ -374,7 +374,7 @@ ps_inet_recvinbootp(void *arg)
+@@ -374,7 +374,7 @@
{
struct ps_process *psp = arg;
@@ -57,7 +55,7 @@ index 3a192ee0..7f7494f6 100644
PS_BOOTP, psp->psp_ctx->ps_data_fd) == -1)
logerr(__func__);
}
-@@ -463,7 +463,7 @@ ps_inet_recvin6dhcp6(void *arg)
+@@ -463,7 +463,7 @@
{
struct ps_process *psp = arg;
@@ -66,11 +64,9 @@ index 3a192ee0..7f7494f6 100644
PS_DHCP6, psp->psp_ctx->ps_data_fd) == -1)
logerr(__func__);
}
-diff --git a/src/privsep.c b/src/privsep.c
-index ab29bb7b..0f78907a 100644
--- a/src/privsep.c
+++ b/src/privsep.c
-@@ -897,7 +897,7 @@ ps_sendcmdmsg(int fd, uint16_t cmd, const struct msghdr
*msg)
+@@ -896,7 +896,7 @@
}
ssize_t
@@ -79,7 +75,7 @@ index ab29bb7b..0f78907a 100644
{
struct sockaddr_storage ss = { .ss_family = AF_UNSPEC };
uint8_t controlbuf[sizeof(struct sockaddr_storage)] = { 0 };
-@@ -913,24 +913,15 @@ ps_recvmsg(struct dhcpcd_ctx *ctx, int rfd, uint16_t
cmd, int wfd)
+@@ -912,24 +912,15 @@
ssize_t len = recvmsg(rfd, &msg, 0);
@@ -106,11 +102,9 @@ index ab29bb7b..0f78907a 100644
return len;
}
-diff --git a/src/privsep.h b/src/privsep.h
-index 132f679a..00184d07 100644
--- a/src/privsep.h
+++ b/src/privsep.h
-@@ -192,7 +192,7 @@ ssize_t ps_sendmsg(struct dhcpcd_ctx *, int, uint16_t,
unsigned long,
+@@ -187,7 +187,7 @@
const struct msghdr *);
ssize_t ps_sendcmd(struct dhcpcd_ctx *, int, uint16_t, unsigned long,
const void *data, size_t len);
diff --git a/debian/patches/6e127eac6903524d401b31893167e4529b8ab111.patch
b/debian/patches/6e127eac6903524d401b31893167e4529b8ab111.patch
index 19655b55..021f5902 100644
--- a/debian/patches/6e127eac6903524d401b31893167e4529b8ab111.patch
+++ b/debian/patches/6e127eac6903524d401b31893167e4529b8ab111.patch
@@ -12,11 +12,9 @@ Update for #179.
src/dhcp.c | 4 ++--
2 files changed, 9 insertions(+), 6 deletions(-)
-diff --git a/src/bpf.c b/src/bpf.c
-index 339f3a014..44b08e6e8 100644
--- a/src/bpf.c
+++ b/src/bpf.c
-@@ -612,16 +612,19 @@ static const struct bpf_insn bpf_bootp_base[] = {
+@@ -612,16 +612,19 @@
#define BPF_BOOTP_BASE_LEN __arraycount(bpf_bootp_base)
static const struct bpf_insn bpf_bootp_read[] = {
@@ -40,11 +38,9 @@ index 339f3a014..44b08e6e8 100644
BPF_STMT(BPF_LD + BPF_W + BPF_IND, 0),
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, (BOOTPC << 16) + BOOTPS, 1, 0),
BPF_STMT(BPF_RET + BPF_K, 0),
-diff --git a/src/dhcp.c b/src/dhcp.c
-index f76807605..9a790b50d 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
-@@ -3459,8 +3459,8 @@ is_packet_udp_bootp(void *packet, size_t plen)
+@@ -3458,8 +3458,8 @@
if (ip_hlen + ntohs(udp.uh_ulen) > plen)
return false;
diff --git a/debian/patches/727c78f503d456875e2a3cee7609288b537d9d25.patch
b/debian/patches/727c78f503d456875e2a3cee7609288b537d9d25.patch
index 96de419c..8a4b457c 100644
--- a/debian/patches/727c78f503d456875e2a3cee7609288b537d9d25.patch
+++ b/debian/patches/727c78f503d456875e2a3cee7609288b537d9d25.patch
@@ -14,11 +14,9 @@ Fixes #283
src/dhcp.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
-diff --git a/src/dhcp.c b/src/dhcp.c
-index a58e1db2..581a9faa 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
-@@ -3532,12 +3532,6 @@ dhcp_handlebootp(struct interface *ifp, struct bootp
*bootp, size_t len,
+@@ -3528,12 +3528,6 @@
{
size_t v;
@@ -31,7 +29,7 @@ index a58e1db2..581a9faa 100644
/* Unlikely, but appeases sanitizers. */
if (len > FRAMELEN_MAX) {
logerrx("%s: packet exceeded frame length (%zu) from %s",
-@@ -3670,6 +3664,13 @@ dhcp_recvmsg(struct dhcpcd_ctx *ctx, struct msghdr *msg)
+@@ -3663,6 +3657,13 @@
logerr(__func__);
return;
}
diff --git a/debian/patches/series b/debian/patches/series
index e5519b8d..765797fc 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -8,6 +8,10 @@
0008_fix_incorrect_assert.patch
0009_allow_newfstatat_syscall.patch
0010_miss_seccomp_on_ppc64el.patch
+#9.4.1-24_deb12u4
53e2f6de4ba87d0534c89cae674e6c1a48724ef0.patch
6e127eac6903524d401b31893167e4529b8ab111.patch
727c78f503d456875e2a3cee7609288b537d9d25.patch
+#9.4.1-24_deb12u5
+2f00c7bfc408b6582d331932dfa47829c4819029.patch
+117742d755b591764036dd4218f314f748a3d2b7.patch
diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml
new file mode 100644
index 00000000..98cf3bda
--- /dev/null
+++ b/debian/salsa-ci.yml
@@ -0,0 +1,3 @@
+---
+include:
+ -
https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml