fvogt created this revision. Restricted Application added a project: Plasma.
REVISION SUMMARY The receiver (kcheckpass) reads a string and if it is !nullptr, reads an int: msg = GRecvStr (); if (msg && (GRecvInt() & IsPassword) && !*msg) The sender (kscreenlocker_greet) sends a string and if it is not empty, sends an int: GSendStr(m_password.toUtf8().constData()); if (!m_password.isEmpty()) { // IsSecret GSendInt(1); } This does not work out for empty strings, as those still have a length of 1, resulting in kcheckpass waiting indefinitely for an int that does not get sent. Testing for a nullptr on the sender side instead of the string length fixes this. Also clean up the code duplication and IsSecret (1)/IsPassword (2) mismatch. BUG: 380491 TEST PLAN Reproduced the bug without this patch, with this patch it does not happen anymore. Authentication still works and fails as expected. REPOSITORY R133 KScreenLocker BRANCH master REVISION DETAIL https://phabricator.kde.org/D6091 AFFECTED FILES greeter/authenticator.cpp To: fvogt, #plasma Cc: plasma-devel, ZrenBot, spstarr, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart, lukas