From d1f9191e3ba39c120d3ec4ce9441deaceb1d48d0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 16 Apr 2024 15:00:38 +0200 Subject: [PATCH] fix: Verify files are not empty (#37) --- src/boot.sh | 10 ++++++---- src/disk.sh | 6 +++--- src/install.sh | 2 +- src/network.sh | 4 ++-- src/progress.sh | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/boot.sh b/src/boot.sh index 1e1bee7..f9e62b3 100644 --- a/src/boot.sh +++ b/src/boot.sh @@ -38,14 +38,16 @@ fi AAVMF="/usr/share/AAVMF/" DEST="$STORAGE/${BOOT_MODE,,}" -if [ ! -f "$DEST.rom" ]; then - [ ! -f "$AAVMF/$ROM" ] && error "UEFI boot file ($AAVMF/$ROM) not found!" && exit 44 +if [ ! -s "$DEST.rom" ]; then + [ ! -s "$AAVMF/$ROM" ] && error "UEFI boot file ($AAVMF/$ROM) not found!" && exit 44 + rm -f "$DEST.rom" dd if=/dev/zero "of=$DEST.rom" bs=1M count=64 status=none dd "if=$AAVMF/$ROM" "of=$DEST.rom" conv=notrunc status=none fi -if [ ! -f "$DEST.vars" ]; then - [ ! -f "$AAVMF/$VARS" ] && error "UEFI vars file ($AAVMF/$VARS) not found!" && exit 45 +if [ ! -s "$DEST.vars" ]; then + [ ! -s "$AAVMF/$VARS" ] && error "UEFI vars file ($AAVMF/$VARS) not found!" && exit 45 + rm -f "$DEST.vars" dd if=/dev/zero "of=$DEST.vars" bs=1M count=64 status=none dd "if=$AAVMF/$VARS" "of=$DEST.vars" conv=notrunc status=none fi diff --git a/src/disk.sh b/src/disk.sh index f4f0663..37ebaad 100644 --- a/src/disk.sh +++ b/src/disk.sh @@ -385,7 +385,7 @@ addDisk () { FS=$(stat -f -c %T "$DIR") checkFS "$FS" "$DISK_FILE" "$DISK_DESC" || exit $? - if ! [ -f "$DISK_FILE" ] ; then + if ! [ -s "$DISK_FILE" ] ; then if [[ "${DISK_FMT,,}" != "raw" ]]; then PREV_FMT="raw" @@ -394,12 +394,12 @@ addDisk () { fi PREV_EXT=$(fmt2ext "$PREV_FMT") - if [ -f "$DISK_BASE.$PREV_EXT" ] ; then + if [ -s "$DISK_BASE.$PREV_EXT" ] ; then convertDisk "$DISK_BASE.$PREV_EXT" "$PREV_FMT" "$DISK_FILE" "$DISK_FMT" "$DISK_BASE" "$DISK_DESC" "$FS" || exit $? fi fi - if [ -f "$DISK_FILE" ]; then + if [ -s "$DISK_FILE" ]; then CUR_SIZE=$(getSize "$DISK_FILE") diff --git a/src/install.sh b/src/install.sh index f5109e9..17db3ab 100644 --- a/src/install.sh +++ b/src/install.sh @@ -37,7 +37,7 @@ info "$MSG" && html "$MSG" fKill "progress.sh" (( rc != 0 )) && error "Failed to download $BOOT , reason: $rc" && exit 60 -[ ! -f "$TMP" ] && error "Failed to download $BOOT" && exit 61 +[ ! -s "$TMP" ] && error "Failed to download $BOOT" && exit 61 html "Download finished successfully..." diff --git a/src/network.sh b/src/network.sh index 7c02760..b909727 100644 --- a/src/network.sh +++ b/src/network.sh @@ -223,7 +223,7 @@ closeNetwork() { else local pid="/var/run/dnsmasq.pid" - [ -f "$pid" ] && pKill "$(<"$pid")" + [ -s "$pid" ] && pKill "$(<"$pid")" ip link set "$VM_NET_TAP" down promisc off || true ip link delete "$VM_NET_TAP" || true @@ -251,7 +251,7 @@ getInfo() { if [ -z "$MAC" ]; then local file="$STORAGE/$PROCESS.mac" - [ -f "$file" ] && MAC=$(<"$file") + [ -s "$file" ] && MAC=$(<"$file") if [ -z "$MAC" ]; then # Generate MAC address based on Docker container ID in hostname MAC=$(echo "$HOST" | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/') diff --git a/src/progress.sh b/src/progress.sh index 007ce57..d32e272 100644 --- a/src/progress.sh +++ b/src/progress.sh @@ -21,7 +21,7 @@ fi while true do - if [ -f "$file" ]; then + if [ -s "$file" ]; then bytes=$(du -sb "$file" | cut -f1) if (( bytes > 1000 )); then size=$(echo "$bytes" | numfmt --to=iec --suffix=B | sed -r 's/([A-Z])/ \1/')