diff --git a/core/busybox/build b/core/busybox/build index 53e48723..287faf95 100755 --- a/core/busybox/build +++ b/core/busybox/build @@ -19,8 +19,8 @@ make CC="${CC:-cc}" HOSTCC="${CC:-cc}" make CONFIG_PREFIX="$1/usr" install # Aptly name the busybox binaries. -mv "$1/usr/bin/busybox" "$1/usr/bin/busybox-suid" -mv "$1/usr/bin/busybox-nosuid" "$1/usr/bin/busybox" +mv -f "$1/usr/bin/busybox" "$1/usr/bin/busybox-suid" +mv -f "$1/usr/bin/busybox-nosuid" "$1/usr/bin/busybox" # Install the non-suid symlinks. "$1/usr/bin/busybox" --list | while read -r bin; do diff --git a/core/busybox/checksums b/core/busybox/checksums index 653e29c9..12d9766c 100644 --- a/core/busybox/checksums +++ b/core/busybox/checksums @@ -3,6 +3,7 @@ d0f940a72f648943c1f2211e0e3117387c31d765137d92bd8284a3fb9752a998 busybox-1.31.1 8d84b1719dca2a751c09072c20cd782a3c47f119a68d35316f89d851daf67b88 fsck-resolve-uuid.patch 0f54301a73af461e8066bc805b48d991cfed513d08a2f036e015b19f97cb424a modprobe-kernel-version.patch 68e0c7d5e96902d3b890e89d9b018ae11d53ed3104bfedd624a1485df58b11cb print-unicode.patch +f0e17fefc0af6b10205d72b242b6ef7481a58ff07726c62890ebc5893b96a396 install-fix-chown.patch 05be5fde1da4b94bea5b2e6f5813873acd558c75508f9a772a71061f3c0d6a6f .config b4479adaabffb1fe9af7db676929e8f5f6bbc47869c5309a19056aa66196fbce .config-suid 76978b2b69361d47b3bb314a8a320ca274b2af7339c571be1a19f0e1d8c4da6a acpid.run diff --git a/core/busybox/patches/install-fix-chown.patch b/core/busybox/patches/install-fix-chown.patch new file mode 100644 index 00000000..31ecd3c8 --- /dev/null +++ b/core/busybox/patches/install-fix-chown.patch @@ -0,0 +1,36 @@ +chown must precede chmod because on some systems, +chown clears the set[ug]id bits for non-superusers, +resulting in incorrect permissions. +diff --git a/coreutils/install.c b/coreutils/install.c +index 8270490..0256aeb 100644 +--- a/coreutils/install.c ++++ b/coreutils/install.c +@@ -244,6 +244,14 @@ int install_main(int argc, char **argv) + } + } + ++ /* Set the user and group id */ ++ if ((opts & (OPT_OWNER|OPT_GROUP)) ++ && lchown(dest, uid, gid) == -1 ++ ) { ++ bb_perror_msg("can't change %s of %s", "ownership", dest); ++ ret = EXIT_FAILURE; ++ } ++ + /* Set the file mode (always, not only with -m). + * GNU coreutils 6.10 is not affected by umask. */ + if (chmod(dest, mode) == -1) { +@@ -254,13 +262,6 @@ int install_main(int argc, char **argv) + if (use_default_selinux_context) + setdefaultfilecon(dest); + #endif +- /* Set the user and group id */ +- if ((opts & (OPT_OWNER|OPT_GROUP)) +- && lchown(dest, uid, gid) == -1 +- ) { +- bb_perror_msg("can't change %s of %s", "ownership", dest); +- ret = EXIT_FAILURE; +- } + next: + if (ENABLE_FEATURE_CLEAN_UP && isdir) + free(dest); diff --git a/core/busybox/sources b/core/busybox/sources index af89866e..87ce97ef 100644 --- a/core/busybox/sources +++ b/core/busybox/sources @@ -3,6 +3,7 @@ patches/adduser-no-setgid.patch patches/fsck-resolve-uuid.patch patches/modprobe-kernel-version.patch patches/print-unicode.patch +patches/install-fix-chown.patch files/.config files/.config-suid files/acpid.run diff --git a/core/busybox/version b/core/busybox/version index 01aa66f1..0e7e342e 100644 --- a/core/busybox/version +++ b/core/busybox/version @@ -1 +1 @@ -1.31.1 6 +1.31.1 7