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

Attachment: signature.asc
Description: PGP signature

Reply via email to