Просмотр исходного кода

Revert "pam_auth: Authenticate all users in single session"

This reverts commit 438a5bac9b53e2412a698316c172cc8655711abd.
z3APA3A 9 лет назад
Родитель
Сommit
32ff114787
1 измененных файлов с 10 добавлено и 4 удалено
  1. 10 4
      src/plugins/PamAuth/pamauth.c

+ 10 - 4
src/plugins/PamAuth/pamauth.c

@@ -13,7 +13,6 @@ Kirill Lopuchov <lopuchov@mail.ru>
 
 
 pthread_mutex_t pam_mutex;
-pam_handle_t *pamh = NULL;
 
 static int         already_loaded = 0;
 
@@ -70,6 +69,7 @@ static void lower (char *string)
 /* --------------------------------------------------------------------------*/
 static int pamfunc(struct clientparam *param)
  {
+  pam_handle_t *pamh = NULL;
   int retval;
   int rc=0;
 
@@ -90,8 +90,10 @@ static int pamfunc(struct clientparam *param)
   conv.appdata_ptr = (char *) param->password;
 
   pthread_mutex_lock(&pam_mutex);
-   if (!pamh)
+  if (!pamh)
+    {
 	retval = pam_start ((char *)service, "3proxy@" , &conv, &pamh);
+    }
    if (retval == PAM_SUCCESS)
        retval = pam_set_item (pamh, PAM_USER, param->username); 
 /*fprintf(stderr,"pam_set_item1 rc=%d\n",retval);*/
@@ -102,11 +104,15 @@ static int pamfunc(struct clientparam *param)
          retval = pam_authenticate (pamh, 0);  
 /*fprintf(stderr,"pam_authenticate rc=%d\n",retval);*/
    
-   pthread_mutex_unlock(&pam_mutex);
-
    if (retval == PAM_SUCCESS) {  /*auth OK*/  rc=0;   }
    else  { /*auth ERR*/  rc=5;     }
 
+   if (pamh)
+      retval = pam_end (pamh, retval);
+   if (retval != PAM_SUCCESS)
+      {  pamh = NULL;   }
+  pthread_mutex_unlock(&pam_mutex);
+
   return rc;
 
 }