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;
 }
openSUSE Build Service is sponsored by