validate_init tries to resolve symlinks, but we can't do it properly
without chroot'ing to the real root. Rather than running readlink
from the real system, use the new run-init -n option.
Closes: #810965
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
debian/control | 2 +-
init | 24 +-----------------------
2 files changed, 2 insertions(+), 24 deletions(-)
diff --git a/debian/control b/debian/control
index af7e559..a943598 100644
--- a/debian/control
+++ b/debian/control
@@ -25,7 +25,7 @@ Package: initramfs-tools-core
Architecture: all
Multi-Arch: foreign
Recommends: busybox (>= 1:1.01-3) | busybox-initramfs | busybox-static
-Depends: klibc-utils (>= 2.0-1~), cpio, kmod | module-init-tools, udev, ${misc:Depends}, klibc-utils (>= 2.0.4-1.2~) | busybox (>= 1:1.01-3) | busybox-initramfs | busybox-static
+Depends: klibc-utils (>= 2.0.4-7~), cpio, kmod | module-init-tools, udev, ${misc:Depends}, klibc-utils (>= 2.0.4-1.2~) | busybox (>= 1:1.01-3) | busybox-initramfs | busybox-static
Suggests: bash-completion
Breaks: initramfs-tools (<< 0.121~)
Replaces: initramfs-tools (<< 0.121~)
diff --git a/init b/init
index 0a862f2..c10546f 100755
--- a/init
+++ b/init
@@ -237,29 +237,7 @@ if read_fstab_entry /usr; then
fi
validate_init() {
- checktarget="${1}"
-
- # Work around absolute symlinks
- if [ -d "${rootmnt}" ] && [ -h "${rootmnt}${checktarget}" ]; then
- checktarget="$(readlink "${rootmnt}${checktarget}")"
- case "$checktarget" in
- /*)
- ;;
- *)
- checktarget="${1%/*}/$checktarget"
- ;;
- esac
- fi
-
- # Make sure the specified init can be executed
- if [ ! -x "${rootmnt}${checktarget}" ]; then
- return 1
- fi
-
- # Upstart uses /etc/init as configuration directory :-/
- if [ -d "${rootmnt}${checktarget}" ]; then
- return 1
- fi
+ run-init -n "${rootmnt}" "${1}"
}
# Check init is really there
Attachment:
signature.asc
Description: Digital signature