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

Reply via email to