https://bugs.kde.org/show_bug.cgi?id=380491

Fabian Vogt <fab...@ritter-vogt.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fab...@ritter-vogt.de

--- Comment #4 from Fabian Vogt <fab...@ritter-vogt.de> ---
I believe I figured out the issue, it's a simple protocol mismatch between
sender and receiver.

The receiver (kcheckpass) reads a string and if it is !nullptr, reads an int:

        msg = GRecvStr ();
        if (msg && (GRecvInt() & IsPassword) && !*msg)

GRecvStr returns a nullptr if the received string has a length of 0 or malloc
fails.

The sender (kscreenlocker_greet) sends a string and if it is not empty, send an
int:

            GSendStr(m_password.toUtf8().constData());
            if (!m_password.isEmpty()) {
                // IsSecret
                GSendInt(1);
            }

Obviously that does not match, as an empty string still has a length of 1, so
kcheckpass will not receive the int it expects.

I'll test that and make a patch that cleans it up a bit. Although I'm not quite
sure what "IsSecret" (which should've been "IsPassword" instead, which even has
a different value now!) was originally supposed to mean, I'll leave it as-is.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to