Hi, Please find the debdiff attached.
On Tue, Jan 06, 2026 at 12:48:03PM +0100, Daniel Gröber wrote: > Package: release.debian.org > Severity: normal > Tags: trixie > X-Debbugs-Cc: [email protected], [email protected], Mark > Kamichoff <[email protected]> > Control: affects -1 + src:ifupdown > User: [email protected] > Usertags: pu > > [ Reason ] > ifupdown in stable introduced a regression causing none of the important > internal scripts getting executed. > > [ Impact ] > Boot failures, service failures, IPv6 network unreachability. > > Problems I've found so far: Not waiting for IPv6 DAD to complete can cause > persistent downstream service failures (#1122511) and not waiting for IPv6 > link-locals causes DHCP configuration to fail (#1088852). > > [ Tests ] > I'm asking an affected user to confirm #1122511 is fixed before uploading > to unstable since I don't have time to do a deep dive to confirm it > manually myself right now. > > Since the underlying breakage is the same for these bugs that should give > us sufficient test coverage for both bugs. I've manually validated the fix in unstable (0.8.45) in a debvm using strace and ifup -v inspection (can see settle-dad.sh for `inet6 static` and wait-for-ll6.sh for `inet6 dhcp` when isc-dhcp-client is installed). Internal scripts where execable() previously returned false are now executed properly and system binaries (tested with `inet dhcp` and isc-dhcp-client) are still executed as expected - meaning execable() is still returning true for them as well. > [ Risks ] > The actual bug is trivial once you see it. > > Worst case if I fuxed up the fix doesn't fix it, but since execable() is > already as broken as it can be it wont break any further ;-). > [ Checklist (Updated) ] [x] *all* changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in (old)stable [x] the issue is verified as fixed in unstable > [ Changes ] > > - Fix execable() returning false for scripts in lib(exec) > > Commit 1eee7a30 ("Use relative names when executing programs") released > in 0.8.42 failed to take into account that PATH is only set locally when > executing commands, not globally and so getenv("PATH") returns the > system default nor our extended PATH. > > [ Other info ] > I'll send the final debdiff as soon as I get confirmation for the fix in > experimental. --Daniel
diff -Nru ifupdown-0.8.44/archcommon.c ifupdown-0.8.44+deb13u1/archcommon.c
--- ifupdown-0.8.44/archcommon.c 2024-08-20 04:02:23.000000000 +0200
+++ ifupdown-0.8.44+deb13u1/archcommon.c 2026-01-08 14:16:10.000000000
+0100
@@ -35,17 +35,13 @@
bool execable(const char *program) {
char *filename = NULL;
- const char *path_list;
+ const char *path_list = EXECUTE_LOCAL_PATHLIST;
const char *path, *path_end;
size_t path_len;
if (program[0] == '/')
return file_is_exec(program);
- path_list = getenv("PATH");
- if (!path_list)
- return false;
-
/*
* We allocate based on the length of PATH and the program name we
* are looking for (plus one byte for the terminating NUL, and a
diff -Nru ifupdown-0.8.44/debian/changelog
ifupdown-0.8.44+deb13u1/debian/changelog
--- ifupdown-0.8.44/debian/changelog 2024-09-17 14:08:12.000000000 +0200
+++ ifupdown-0.8.44+deb13u1/debian/changelog 2026-01-08 14:17:04.000000000
+0100
@@ -1,3 +1,18 @@
+ifupdown (0.8.44+deb13u1) trixie; urgency=medium
+
+ * Fix ifup regression where it would return before IPv6 DAD had
+ completed allowing boot to proceed and causing subsequent service
+ start failures with "Cannot assign requested" or "Address not available".
+ (Closes: #1122511)
+ * Fix ifup regression calling dhclient before IPv6 link-locals are
+ available on interface.
+ (Closes: #1088852)
+ * Fix execable() returning false for scripts in lib(exec) causing the
+ above regressions. This underlying bug was introduced in 0.8.42.
+ * Add myself to Uploaders.
+
+ -- Daniel Gröber <[email protected]> Thu, 08 Jan 2026 14:17:04 +0100
+
ifupdown (0.8.44) unstable; urgency=low
[ Debian Janitor ]
diff -Nru ifupdown-0.8.44/debian/control ifupdown-0.8.44+deb13u1/debian/control
--- ifupdown-0.8.44/debian/control 2024-09-17 14:07:12.000000000 +0200
+++ ifupdown-0.8.44+deb13u1/debian/control 2026-01-08 14:16:10.000000000
+0100
@@ -2,7 +2,10 @@
Section: admin
Priority: important
Maintainer: Debian Networking Team <[email protected]>
-Uploaders: Josué Ortega <[email protected]>, Santiago Ruano Rincón
<[email protected]>
+Uploaders:
+ Daniel Gröber <[email protected]>,
+ Josué Ortega <[email protected]>,
+ Santiago Ruano Rincón <[email protected]>,
Standards-Version: 4.6.1
Build-Depends: debhelper-compat (= 13)
Vcs-Git: https://salsa.debian.org/debian/ifupdown.git
diff -Nru ifupdown-0.8.44/execute.c ifupdown-0.8.44+deb13u1/execute.c
--- ifupdown-0.8.44/execute.c 2024-08-20 04:02:23.000000000 +0200
+++ ifupdown-0.8.44+deb13u1/execute.c 2026-01-08 14:16:10.000000000 +0100
@@ -104,7 +104,7 @@
*ppch++ = setlocalenv("%s=%s", "MODE", mode);
*ppch++ = setlocalenv("%s=%s", "PHASE", phase);
*ppch++ = setlocalenv("%s=%s", "VERBOSITY", verbose ? "1" : "0");
- *ppch++ = setlocalenv("%s=%s", "PATH", PKGLIBDIR
":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin");
+ *ppch++ = setlocalenv("%s=%s", "PATH", EXECUTE_LOCAL_PATHLIST);
if (allow_class || do_all)
*ppch++ = setlocalenv("%s=%s", "CLASS", allow_class ?
allow_class : "auto");
*ppch = NULL;
diff -Nru ifupdown-0.8.44/header.h ifupdown-0.8.44+deb13u1/header.h
--- ifupdown-0.8.44/header.h 2024-08-20 04:02:23.000000000 +0200
+++ ifupdown-0.8.44+deb13u1/header.h 2026-01-08 14:16:10.000000000 +0100
@@ -100,6 +100,8 @@
#define RUN_DIR "/run/network/"
#endif
+#define EXECUTE_LOCAL_PATHLIST (PKGLIBDIR
":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
+
#ifndef LO_IFACE
#define LO_IFACE "lo"
#endif
signature.asc
Description: PGP signature

