fix: add EXIT trap to ensure encryption flag and temp files are cleaned up on crash

This commit is contained in:
2026-09-16 14:10:47 +02:00
parent 8bfc4d04b7
commit 8234c2d9f3
3 changed files with 16 additions and 3 deletions
+6 -1
View File
@@ -148,6 +148,8 @@ restore_encryption_flag() {
clean_up() { clean_up() {
# Perform program exit housekeeping # Perform program exit housekeeping
# Clear EXIT trap first so that the exit below does not fire it again.
trap - EXIT
restore_encryption_flag restore_encryption_flag
[[ -n "$recovery_php_file" ]] && rm -f "$recovery_php_file" 2> /dev/null [[ -n "$recovery_php_file" ]] && rm -f "$recovery_php_file" 2> /dev/null
rm -rf "$LOCK_DIR" rm -rf "$LOCK_DIR"
@@ -1179,7 +1181,10 @@ su -c "$PHP_BIN $INSTALL_DIR/occ config:system:set encryption_skip_signature_che
if [[ $? -eq 0 ]] ; then if [[ $? -eq 0 ]] ; then
echo_ok echo_ok
_encryption_flag_changed=true _encryption_flag_changed=true
trap 'restore_encryption_flag; clean_up 1' SIGHUP SIGINT SIGTERM # Trap signals AND normal/abnormal exit so that the encryption flag
# and temp files are always cleaned up — even on a syntax error or
# an unexpected crash (EXIT fires for any bash exit, including errors).
trap 'clean_up 1' SIGHUP SIGINT SIGTERM EXIT
else else
echo_failed echo_failed
fatal "Could not enable encryption_skip_signature_check: $(cat "$log_file")" fatal "Could not enable encryption_skip_signature_check: $(cat "$log_file")"
+5 -1
View File
@@ -183,6 +183,8 @@ usage() {
clean_up() { clean_up() {
# Perform program exit housekeeping # Perform program exit housekeeping
# Clear EXIT trap first so that the exit below does not fire it again.
trap - EXIT
[[ -n "$recreate_php_file" ]] && rm -f "$recreate_php_file" 2> /dev/null [[ -n "$recreate_php_file" ]] && rm -f "$recreate_php_file" 2> /dev/null
rm -rf "$LOCK_DIR" rm -rf "$LOCK_DIR"
blank_line blank_line
@@ -751,7 +753,9 @@ fi
# - # -
if mkdir "$LOCK_DIR" 2> /dev/null ; then if mkdir "$LOCK_DIR" 2> /dev/null ; then
trap clean_up SIGHUP SIGINT SIGTERM # Trap signals AND normal/abnormal exit so that temp files and the
# lock directory are always removed — even on an unexpected crash.
trap 'clean_up 1' SIGHUP SIGINT SIGTERM EXIT
else else
+5 -1
View File
@@ -167,6 +167,8 @@ usage() {
clean_up() { clean_up() {
# Perform program exit housekeeping # Perform program exit housekeeping
# Clear EXIT trap first so that the exit below does not fire it again.
trap - EXIT
[[ -n "$restore_php_file" ]] && rm -f "$restore_php_file" 2> /dev/null [[ -n "$restore_php_file" ]] && rm -f "$restore_php_file" 2> /dev/null
rm -rf "$LOCK_DIR" rm -rf "$LOCK_DIR"
blank_line blank_line
@@ -781,7 +783,9 @@ if mkdir "$LOCK_DIR" 2> /dev/null ; then
# - Remove lockdir when the script finishes, or when it receives a signal # - Remove lockdir when the script finishes, or when it receives a signal
# - # -
trap clean_up SIGHUP SIGINT SIGTERM # Trap signals AND normal/abnormal exit so that temp files and the
# lock directory are always removed — even on an unexpected crash.
trap 'clean_up 1' SIGHUP SIGINT SIGTERM EXIT
else else