From 03ad6c52c006b947f1441cfe0d626792a6f6ddd5 Mon Sep 17 00:00:00 2001 From: chandi Langecker Date: Sun, 29 Jan 2023 16:50:37 +0100 Subject: [PATCH] Fix unexpected behavior of --lock when keepassxc is not running (#8889) currently, when keepassxc is not running, the command `keepassxc --lock` opens a new keepass window and blocks until the window is closed. Especially in locking scripts this is rather unexpected and Ican't think of a case where someone explicitly starts keepass with --lock and wants this behaviour. Rather --lock should always ensure, that there are no unlocked instances and exiting afterwards --- share/translations/keepassxc_en.ts | 4 ++++ src/main.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts index 0587c115a..c26090a79 100644 --- a/share/translations/keepassxc_en.ts +++ b/share/translations/keepassxc_en.ts @@ -7861,6 +7861,10 @@ Kernel: %3 %4 This options is deprecated, use --set-key-file instead. + + KeePassXC is not running. No open database to lock + + QtIOCompressor diff --git a/src/main.cpp b/src/main.cpp index 47fe55483..f426a76e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -156,6 +156,14 @@ int main(int argc, char** argv) return EXIT_SUCCESS; } + if (parser.isSet(lockOption)) { + qWarning() << QObject::tr("KeePassXC is not running. No open database to lock").toUtf8().constData(); + + // still return with EXIT_SUCCESS because when used within a script for ensuring that there is no unlocked + // keepass database (e.g. screen locking) we can consider it as successful + return EXIT_SUCCESS; + } + if (!Crypto::init()) { QString error = QObject::tr("Fatal error while testing the cryptographic functions."); error.append("\n");