diff --git a/greeter/authenticator.cpp b/greeter/authenticator.cpp --- a/greeter/authenticator.cpp +++ b/greeter/authenticator.cpp @@ -241,6 +241,18 @@ emit error(QString::fromLocal8Bit(arr)); ::free( arr ); return; + case ConvPutAuthSucceeded: + emit succeeded(); + return; + case ConvPutAuthFailed: + emit failed(); + return; + case ConvPutAuthError: + cantCheck(); + return; + case ConvPutAuthAbort: + // what to do here? + return; } } reapVerify(); @@ -258,18 +270,6 @@ cantCheck(); return; } - if (WIFEXITED(status)) - switch (WEXITSTATUS(status)) { - case AuthOk: - emit succeeded(); - return; - case AuthBad: - emit failed(); - return; - case AuthAbort: - return; - } - cantCheck(); } void KCheckPass::cantCheck() diff --git a/kcheckpass/kcheckpass-enums.h b/kcheckpass/kcheckpass-enums.h --- a/kcheckpass/kcheckpass-enums.h +++ b/kcheckpass/kcheckpass-enums.h @@ -54,7 +54,11 @@ ConvGetNormal, ConvGetHidden, ConvPutInfo, - ConvPutError + ConvPutError, + ConvPutAuthSucceeded, + ConvPutAuthFailed, + ConvPutAuthError, + ConvPutAuthAbort } ConvRequest; /* these must match the defs in kgreeterplugin.h */ diff --git a/kcheckpass/kcheckpass.c b/kcheckpass/kcheckpass.c --- a/kcheckpass/kcheckpass.c +++ b/kcheckpass/kcheckpass.c @@ -266,6 +266,11 @@ nullpass = 1; return msg; } + case ConvPutAuthSucceeded: + case ConvPutAuthFailed: + case ConvPutAuthError: + case ConvPutAuthAbort: + return 0; case ConvPutInfo: case ConvPutError: default: @@ -406,8 +411,23 @@ syslog(LOG_NOTICE, "Authentication failure for %s (invoked by uid %d)", username, uid); } } + switch (ret) { + case AuthOk: + conv_server(ConvPutAuthSucceeded, 0); + break; + case AuthBad: + conv_server(ConvPutAuthFailed, 0); + break; + case AuthError: + conv_server(ConvPutAuthError, 0); + break; + case AuthAbort: + conv_server(ConvPutAuthAbort, 0); + default: + break; + } - return ret; + return 0; } void