stage-1: escape mount points and options

mountFS adds these strings to fstab and then relies on `mount` parsing fstab. If
they have spaces or tabs in them, that would break fstab and therefore not mount
with the unhelpful error: No such file or directory.

Co-authored-by: Lily Foster <lily@lily.flowers>

Co-authored-by: Luflosi <Luflosi@users.noreply.github.com>
This commit is contained in:
Atemu 2022-10-22 23:55:04 +02:00
parent 7e2aec079c
commit 753f883c35

View File

@ -342,6 +342,14 @@ checkFS() {
return 0
}
escapeFstab() {
local original="$1"
# Replace space
local escaped="${original// /\\040}"
# Replace tab
echo "${escaped//$'\t'/\\011}"
}
# Function for mounting a file system.
mountFS() {
@ -569,7 +577,7 @@ while read -u 3 mountPoint; do
continue
fi
mountFS "$device" "$mountPoint" "$options" "$fsType"
mountFS "$device" "$(escapeFstab "$mountPoint")" "$(escapeFstab "$options")" "$fsType"
done
exec 3>&-