Skip to content

Commit a2848e2

Browse files
committed
Fix: Never assign fallible expressions in local var declarations
- bash treats `local x=$(<expression>)` such that if `<expression>` fails, the declaration still succeeds; - this breaks the intended behavior of `set -e`
1 parent 3990691 commit a2848e2

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

runcvm-scripts/runcvm-ctr-qemu

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ error() {
2525
# Argument e.g. /volume/disk1,/var/lib/docker,ext4,5G
2626
do_disk() {
2727
local spec="$1"
28-
local src dst fs size
28+
local src dst fs size dir UUID
2929

3030
local IFS=','
3131
read src dst fs size <<< $(echo "$spec")
@@ -53,7 +53,7 @@ do_disk() {
5353
fi
5454

5555
# Create directory for disk backing file, if needed.
56-
local dir="$(busybox dirname "$src")"
56+
dir="$(busybox dirname "$src")"
5757
if ! [ -d "$dir" ]; then
5858
mkdir -p $(busybox dirname "$src")
5959
fi
@@ -62,7 +62,7 @@ do_disk() {
6262
mke2fs -F -t "$fs" "$src" >&2 || error "Error: disk spec '$spec' invalid: mke2fs on '$src' with fs '$fs' failed"
6363
fi
6464

65-
local UUID=$(blkid -o value "$src" | head -n 1)
65+
UUID=$(blkid -o value "$src" | head -n 1)
6666
mkdir -p "$RUNCVM_VM_MOUNTPOINT/$dst" >&2
6767
echo "UUID=$UUID $dst $fs defaults,noatime 0 0" >>/.runcvm/fstab
6868
DISKS+=(-drive file=$src,format=raw,if=virtio,media=disk,cache=directsync,aio=native)
@@ -252,9 +252,10 @@ ARGS=(
252252
# Kernel and initrd and kernel cmdline
253253
-kernel $RUNCVM_KERNEL_PATH
254254
-initrd $RUNCVM_KERNEL_INITRAMFS_PATH
255+
-L $RUNCVM_GUEST/usr/share/qemu
255256
-append "$RUNCVM_KERNEL_ROOT $INIT rw ${APPEND[*]} $RUNCVM_KERNEL_APPEND"
256257
)
257258

258-
if [[ "$RUNCVM_BREAK" =~ preqemu ]]; then echo Preparing to run: '$CMD' "${ARGS[@]@Q}"; bash; fi
259+
if [[ "$RUNCVM_BREAK" =~ preqemu ]]; then echo "Preparing to run: '$CMD' ${ARGS[@]@Q}"; bash; fi
259260

260261
exec "$CMD" "${ARGS[@]}"

runcvm-scripts/runcvm-install-runtime.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ docker_restart() {
4848
# - With systemd, run: systemctl restart docker
4949
# - On GitHub Codespaces, run: sudo killall dockerd && sudo /usr/local/share/docker-init.sh
5050

51-
local init=$(ps -o comm,pid 1 | grep ' 1$' | awk '{print $1}')
52-
local cmd
51+
local cmd init
52+
53+
init=$(ps -o comm,pid 1 | grep ' 1$' | awk '{print $1}')
5354

5455
log " - Preparing to restart dockerd ..."
5556

runcvm-scripts/runcvm-runtime

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,23 +107,29 @@ get_process_env() {
107107
local file="$1"
108108
local var="$2"
109109
local default="$3"
110-
local value=$(jq_get "$file" --arg env "$var" '.env[] | select(match("^" + $env + "=")) | match("^" + $env + "=(.*)") | .captures[] | .string')
110+
local value
111+
112+
value=$(jq_get "$file" --arg env "$var" '.env[] | select(match("^" + $env + "=")) | match("^" + $env + "=(.*)") | .captures[] | .string')
111113

112114
[ -n "$value" ] && echo -n "$value" || echo -n "$default"
113115
}
114116

115117
get_process_env_boolean() {
116118
local file="$1"
117119
local var="$2"
118-
local value=$(jq_get "$file" --arg env "$var" '.env[] | select(match("^" + $env + "=")) | match("^" + $env + "=(.*)") | .captures[] | .string')
120+
local value
121+
122+
value=$(jq_get "$file" --arg env "$var" '.env[] | select(match("^" + $env + "=")) | match("^" + $env + "=(.*)") | .captures[] | .string')
119123

120124
[ -n "$value" ] && echo "1" || echo "0"
121125
}
122126

123127
get_config_env() {
124128
local var="$1"
125129
local default="$2"
126-
local value=$(jq_get "$CFG" --arg env "$var" '.process.env[] | select(match("^" + $env + "=")) | match("^" + $env + "=(.*)") | .captures[] | .string')
130+
local value
131+
132+
value=$(jq_get "$CFG" --arg env "$var" '.process.env[] | select(match("^" + $env + "=")) | match("^" + $env + "=(.*)") | .captures[] | .string')
127133

128134
[ -n "$value" ] && echo -n "$value" || echo -n "$default"
129135
}

0 commit comments

Comments
 (0)