From 7a0c0bd6e156c2493937af425925ebb57832af3b Mon Sep 17 00:00:00 2001 From: Guillaume Champagne Date: Tue, 26 Mar 2024 17:39:47 -0400 Subject: [PATCH] Fix assertion error when noWallet used Krfb fails to startup if "noWallet" is in the config since `walletOpened()` is called without a wallet, triggering the `Q_ASSERT` at the beginning of the function. Fix this by adding function to read passwords from the config directly rather than reusing the `walletOpened()` slot. --- krfb/invitationsrfbserver.cpp | 39 ++++++++++++++++++++--------------- krfb/invitationsrfbserver.h | 1 + 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/krfb/invitationsrfbserver.cpp b/krfb/invitationsrfbserver.cpp index 9a499474..8b312136 100644 --- a/krfb/invitationsrfbserver.cpp +++ b/krfb/invitationsrfbserver.cpp @@ -58,7 +58,7 @@ void InvitationsRfbServer::init() instance->m_wallet = nullptr; if (KrfbConfig::noWallet()) { - instance->walletOpened(false); + instance->readPasswordFromConfig(); } else { instance->openKWallet(); } @@ -181,23 +181,8 @@ void InvitationsRfbServer::walletOpened(bool opened) } } else { - qCDebug(KRFB) << "Could not open KWallet, Falling back to config file"; - KConfigGroup krfbConfig(KSharedConfig::openConfig(),QStringLiteral("Security")); - - desktopPassword = KStringHandler::obscure(krfbConfig.readEntry( - "desktopPassword", QString())); - if(!desktopPassword.isEmpty()) { - m_desktopPassword = desktopPassword; - Q_EMIT passwordChanged(m_desktopPassword); - } - - unattendedPassword = KStringHandler::obscure(krfbConfig.readEntry( - "unattendedPassword", QString())); - if(!unattendedPassword.isEmpty()) { - m_unattendedPassword = unattendedPassword; - } - + readPasswordFromConfig(); } } @@ -258,3 +243,23 @@ void InvitationsRfbServer::saveSecuritySettings() } KrfbConfig::self()->save(); } + +void InvitationsRfbServer::readPasswordFromConfig() +{ + QString desktopPassword; + QString unattendedPassword; + KConfigGroup krfbConfig(KSharedConfig::openConfig(),QStringLiteral("Security")); + + desktopPassword = KStringHandler::obscure(krfbConfig.readEntry( + "desktopPassword", QString())); + if(!desktopPassword.isEmpty()) { + m_desktopPassword = desktopPassword; + Q_EMIT passwordChanged(m_desktopPassword); + } + + unattendedPassword = KStringHandler::obscure(krfbConfig.readEntry( + "unattendedPassword", QString())); + if(!unattendedPassword.isEmpty()) { + m_unattendedPassword = unattendedPassword; + } +} diff --git a/krfb/invitationsrfbserver.h b/krfb/invitationsrfbserver.h index 5f72fffc..773aeef2 100644 --- a/krfb/invitationsrfbserver.h +++ b/krfb/invitationsrfbserver.h @@ -70,6 +70,7 @@ private: KWallet::Wallet *m_wallet = nullptr; QString readableRandomString(int); + void readPasswordFromConfig(); Q_DISABLE_COPY(InvitationsRfbServer) };