From 0936d58bae0310f2c9b8e378d336e420d0d1476a Mon Sep 17 00:00:00 2001 From: anonym Date: Mon, 30 Nov 2020 13:15:39 +0100 Subject: [PATCH] Try to detect corrupt GnuPG pubring.kbx and restore any backup (refs: #17807) --- .../usr/local/sbin/live-persist | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/config/chroot_local-includes/usr/local/sbin/live-persist b/config/chroot_local-includes/usr/local/sbin/live-persist index f1611f12be..a35eb0bd55 100755 --- a/config/chroot_local-includes/usr/local/sbin/live-persist +++ b/config/chroot_local-includes/usr/local/sbin/live-persist @@ -120,6 +120,22 @@ migrate_persistence_preset() fi } +maybe_restore_gnupg_pubring() +{ + local KEYRING="/home/amnesia/.gnupg/pubring.kbx" + local KEYRING_BAK="${KEYRING}~" + local KEYRING_SIZE="$(stat -c %s ${KEYRING} || echo 0)" + + if [ ! -f "${KEYRING}" ] || [ "${KEYRING_SIZE}" -le 32 ]; then + warning "It seems the GnuPG keyring is corrupt" + if [ -f "${KEYRING_BAK}" ]; then + warning "Restoring backup of GnuPG keyring" + cp "${KEYRING_BAK}" "${KEYRING}" + chmod u=rw,go= "${KEYRING}" + fi + fi +} + # We override live-boot's logging facilities to get more useful error messages log_warning_msg () { @@ -463,6 +479,11 @@ activate_volumes () echo " - ${vol}" done fi + + if mountpoint -q /home/amnesia/.gnupg; then + maybe_restore_gnupg_pubring + fi + exit ${ret} } -- GitLab