]> arthur.barton.de Git - netatalk.git/commitdiff
Fix adminauthuser
authorFrank Lahm <franklahm@googlemail.com>
Sat, 29 Oct 2011 14:07:11 +0000 (16:07 +0200)
committerFrank Lahm <franklahm@googlemail.com>
Sat, 29 Oct 2011 14:07:11 +0000 (16:07 +0200)
etc/uams/uams_dhx2_pam.c

index c499dbaac905e8ace0cf974d95204c63b20522d0..7b9c0f236374379676be7bd3414ccaddf2ad3ce3 100644 (file)
@@ -530,12 +530,11 @@ exit:
 }
 
 /**
- * Try to authenticate via PAM as root
+ * Try to authenticate via PAM as "adminauthuser"
  **/
-static int loginasroot(const char *adminauthuser, int status)
+static int loginasroot(const char *adminauthuser, char **hostname, int status)
 {
     int PAM_error;
-    char *hostname = NULL;
 
     if ((PAM_error = pam_end(pamh, status)) != PAM_SUCCESS)
         goto exit;
@@ -548,20 +547,11 @@ static int loginasroot(const char *adminauthuser, int status)
 
     /* solaris craps out if PAM_TTY and PAM_RHOST aren't set. */
     pam_set_item(pamh, PAM_TTY, "afpd");
-    pam_set_item(pamh, PAM_RHOST, hostname);
+    pam_set_item(pamh, PAM_RHOST, *hostname);
     if ((PAM_error = pam_authenticate(pamh, 0)) != PAM_SUCCESS)
         goto exit;
 
-    LOG(log_warning, logtype_uams, "DHX2: Authenticated as \"%s\2", adminauthuser);
-
-    if ((PAM_error = pam_end(pamh, status)) != PAM_SUCCESS)
-        goto exit;
-    pamh = NULL;
-
-    if ((PAM_error = pam_start("netatalk", PAM_username, &PAM_conversation, &pamh)) != PAM_SUCCESS) {
-        LOG(log_info, logtype_uams, "DHX2: PAM_Error: %s", pam_strerror(pamh,PAM_error));
-        goto exit;
-    }
+    LOG(log_warning, logtype_uams, "DHX2: Authenticated as \"%s\"", adminauthuser);
 
 exit:
     return PAM_error;
@@ -653,8 +643,9 @@ static int logincont2(void *obj_in, struct passwd **uam_pwd,
             ret = AFPERR_PWDEXPR;
         LOG(log_info, logtype_uams, "DHX2: PAM_Error: %s",
             pam_strerror(pamh, PAM_error));
-        if (obj->options.adminauthuser
-            && loginasroot(obj->options.adminauthuser, PAM_error) != PAM_SUCCESS)
+        if (!obj->options.adminauthuser)
+            goto error_ctx;
+        if (loginasroot(obj->options.adminauthuser, &hostname, PAM_error) != PAM_SUCCESS)
             goto error_ctx;
     }