File same-pam-generic-classic.diff of Package kdebase4-workspace
Subject: Use same pam config with generic plugin, to be used with fingerprint auth
From: dmueller@suse.de
Patch-upstream: no
Index: kcheckpass/checkpass_pam.c
===================================================================
--- kcheckpass/checkpass_pam.c.orig
+++ kcheckpass/checkpass_pam.c
@@ -140,12 +140,14 @@ AuthReturn Authenticate(const char *call
openlog("kcheckpass", LOG_PID, LOG_AUTH);
PAM_data.conv = conv;
- if (strcmp(method, "classic")) {
- sprintf(pservb, "%.31s-%.31s", caller, method);
- pam_service = pservb;
- } else {
+ if (strcmp(method, "classic") == 0) {
/* PAM_data.classic = 1; */
pam_service = caller;
+ } else if (strcmp(method, "generic") == 0) {
+ pam_service = caller;
+ } else {
+ sprintf(pservb, "%.31s-%.31s", caller, method);
+ pam_service = pservb;
}
pam_error = pam_start(pam_service, user, &PAM_conversation, &pamh);
if (pam_error != PAM_SUCCESS)
Index: kdm/backend/client.c
===================================================================
--- kdm/backend/client.c.orig
+++ kdm/backend/client.c
@@ -540,7 +540,8 @@ verify(GConvFunc gconv, int rootok)
#ifdef USE_PAM
pnopass = False;
- if (!strcmp(curtype, "classic")) {
+ pdata.usecur = False;
+ if (!strcmp(curtype, "classic") || !strcmp(curtype, "generic")) {
if (!gconv(GCONV_USER, 0))
return False;
if (isNoPassAllowed(curuser)) {
@@ -555,11 +556,11 @@ verify(GConvFunc gconv, int rootok)
} else {
psrv = PAMService;
}
- pdata.usecur = True;
+ if (!strcmp(curtype, "classic"))
+ pdata.usecur = True;
} else {
sprintf(psrvb, "%.31s-%.31s", PAMService, curtype);
psrv = psrvb;
- pdata.usecur = False;
}
pdata.gconv = gconv;
if (!doPAMAuth(psrv, &pdata))
Index: libs/kdm/kgreet_generic.cpp
===================================================================
--- libs/kdm/kgreet_generic.cpp.orig
+++ libs/kdm/kgreet_generic.cpp
@@ -156,6 +156,7 @@ KGenericGreeter::textPrompt(const char *
exp =
exp >= 0 ||
func != Authenticate ||
+ !echo ||
!(kgreeterplugin_info.flags & KGreeterPluginInfo::Presettable);
if (!exp && !fixedUser.isEmpty()) {
@@ -325,8 +326,7 @@ static bool init(const QString &,
echoMode = getConf(ctx, "EchoMode", QVariant(-1)).toInt();
// Fielded entities are not supported per se.
// This implies that the first field is the presettable entity, if any.
- if (getConf(ctx, "generic.Presettable", QVariant(false)).toBool())
- kgreeterplugin_info.flags |= KGreeterPluginInfo::Presettable;
+ kgreeterplugin_info.flags |= KGreeterPluginInfo::Presettable;
KGlobal::locale()->insertCatalog("kgreet_generic");
return true;
}