summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-04-27 03:19:38 -0500
committerSlávek Banko <slavek.banko@axis.cz>2012-06-03 03:27:16 +0200
commit33f1ecab8492e686c4bd736419ca1ae33e2c6eea (patch)
tree84b34fd2784343dc19dae754a52ef5751fc54690
parent9c17452032ed5e886f29c18c32898beb23c65d95 (diff)
downloadtdebase-33f1ecab8492e686c4bd736419ca1ae33e2c6eea.tar.gz
tdebase-33f1ecab8492e686c4bd736419ca1ae33e2c6eea.zip
Harden lock against rare race condition that caused two password prompts to appear
Provide alternate secure dialog text string when username cannot be obtained (cherry picked from commit e899b7beb6b0f2db8c08dfdc14c29efb99046086)
-rw-r--r--kdesktop/lock/lockprocess.cc2
-rw-r--r--kdesktop/lock/securedlg.cc7
2 files changed, 8 insertions, 1 deletions
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index 3fb068b6f..80616b79c 100644
--- a/kdesktop/lock/lockprocess.cc
+++ b/kdesktop/lock/lockprocess.cc
@@ -1542,6 +1542,7 @@ void LockProcess::displayLockDialogIfNeeded()
mBusy = true;
if (mLocked) {
if (checkPass()) {
+ trinity_desktop_lock_closing_windows = true;
stopSaver();
kapp->quit();
}
@@ -1882,6 +1883,7 @@ bool LockProcess::x11Event(XEvent *event)
else {
if (!mLocked || checkPass())
{
+ trinity_desktop_lock_closing_windows = true;
stopSaver();
kapp->quit();
}
diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cc
index 68c56e7c3..f074ec75a 100644
--- a/kdesktop/lock/securedlg.cc
+++ b/kdesktop/lock/securedlg.cc
@@ -91,7 +91,12 @@ SecureDlg::SecureDlg(LockProcess *parent)
if (userString == "") {
userString = user.loginName();
}
- mLogonStatus->setText(i18n("'%1' is currently logged on").arg( user.fullName() ));
+ if (userString != "") {
+ mLogonStatus->setText(i18n("'%1' is currently logged on").arg( user.fullName() ));
+ }
+ else {
+ mLogonStatus->setText(i18n("You are currently logged on")); // We should never get here, and this message is somewhat obtuse, but it is better than displaying two qotation marks with no text between them...
+ }
KSeparator *sep = new KSeparator( KSeparator::HLine, frame );