tCheck no mounts prior to 'sudo rm -rf' (zlibs/{helpers,bootstrap}) - libdevuansdk - common library for devuan's simple distro kits HTML git clone https://git.parazyd.org/libdevuansdk DIR Log DIR Files DIR Refs DIR Submodules DIR README DIR LICENSE --- DIR commit 25a86b7428eabe0ab7f3a45daa76ff84a07af450 DIR parent 3cffb94e5cc47210ccb9177052e8b6c71d2c8cbb HTML Author: gryrmln <gryrmln@localhost> Date: Fri, 2 Apr 2021 12:00:46 +0100 Check no mounts prior to 'sudo rm -rf' (zlibs/{helpers,bootstrap}) Signed-off-by: gryrmln <gryrmln@localhost> Diffstat: M zlibs/bootstrap | 12 +++++++++++- M zlibs/helpers | 8 ++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) --- DIR diff --git a/zlibs/bootstrap b/zlibs/bootstrap t@@ -246,7 +246,17 @@ bootstrap_cpio_unpack() notice "Unpacking bootstrap cpio archive: $_bootstrap_cpio" silly - sudo rm -rf "${strapdir}"/* + # Danger Will Robinson + # Check for (bind) mounts as sudo rm -rf will trash the host + for m in sys proc dev; do + if [[ $(mountpoint -q "${strapdir}/$m") ]]; then + zerr + return 1 + fi + done + # remove everything, including .dotdirfiles + sudo rm -rf "$strapdir" + mkdir -p "$strapdir" pushd "$strapdir" || { zerr; return 1; } zcat "$_bootstrap_cpio" | sudo cpio -idmn --format=newc || { zerr; return 1; } DIR diff --git a/zlibs/helpers b/zlibs/helpers t@@ -113,6 +113,14 @@ clean_strapdir() notice "Cleaning strapdir" + # Danger Will Robinson + # Check for (bind) mounts as sudo rm -rf will trash the host + for m in sys proc dev; do + if [[ $(mountpoint -q "${strapdir}/$m") ]]; then + zerr + return 1 + fi + done sudo rm -rf "$strapdir" }