]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Runtime check for broken PAM systems with no appdata_ptr support. This
authorJeremy Allison <jra@samba.org>
Tue, 1 May 2001 18:25:20 +0000 (18:25 +0000)
committerJeremy Allison <jra@samba.org>
Tue, 1 May 2001 18:25:20 +0000 (18:25 +0000)
should eventually be an autoconf test with a #ifdef workaround. I *HATE* pam :-).
Jeremy.

source/auth/pampass.c
source/passdb/pampass.c

index 68024f94810651bd951371d6b8a7c4dbbbb90656..8f62d353173d3acf98c744bc46a1e09eef6916fc 100644 (file)
@@ -113,6 +113,16 @@ static int smb_pam_conv(int num_msg,
 
        *resp = NULL;
 
+       /*
+        * Apparantly HPUX has a buggy PAM that doesn't support the
+        * appdata_ptr. Fail if this is the case. JRA.
+        */
+
+       if (udp == NULL) {
+               DEBUG(0,("smb_pam_conv: PAM on this system is broken - appdata_ptr == NULL !\n"));
+               return PAM_CONV_ERR;
+       }
+
        reply = malloc(sizeof(struct pam_response) * num_msg);
        if (!reply)
                return PAM_CONV_ERR;
@@ -170,6 +180,18 @@ static int smb_pam_passchange_conv(int num_msg,
        char *p = lp_passwd_chat();
        struct smb_pam_userdata *udp = (struct smb_pam_userdata *)appdata_ptr;
 
+       *resp = NULL;
+
+       /*
+        * Apparantly HPUX has a buggy PAM that doesn't support the
+        * appdata_ptr. Fail if this is the case. JRA.
+        */
+
+       if (udp == NULL) {
+               DEBUG(0,("smb_pam_passchange_conv: PAM on this system is broken - appdata_ptr == NULL !\n"));
+               return PAM_CONV_ERR;
+       }
+
        /* Get the prompts... */
 
        if (!next_token(&p, currentpw_prompt, NULL, sizeof(fstring)))
@@ -179,8 +201,6 @@ static int smb_pam_passchange_conv(int num_msg,
        if (!next_token(&p, repeatpw_prompt, NULL, sizeof(fstring)))
                return PAM_CONV_ERR;
 
-       *resp = NULL;
-
        reply = malloc(sizeof(struct pam_response) * num_msg);
        if (!reply)
                return PAM_CONV_ERR;
index 68024f94810651bd951371d6b8a7c4dbbbb90656..8f62d353173d3acf98c744bc46a1e09eef6916fc 100644 (file)
@@ -113,6 +113,16 @@ static int smb_pam_conv(int num_msg,
 
        *resp = NULL;
 
+       /*
+        * Apparantly HPUX has a buggy PAM that doesn't support the
+        * appdata_ptr. Fail if this is the case. JRA.
+        */
+
+       if (udp == NULL) {
+               DEBUG(0,("smb_pam_conv: PAM on this system is broken - appdata_ptr == NULL !\n"));
+               return PAM_CONV_ERR;
+       }
+
        reply = malloc(sizeof(struct pam_response) * num_msg);
        if (!reply)
                return PAM_CONV_ERR;
@@ -170,6 +180,18 @@ static int smb_pam_passchange_conv(int num_msg,
        char *p = lp_passwd_chat();
        struct smb_pam_userdata *udp = (struct smb_pam_userdata *)appdata_ptr;
 
+       *resp = NULL;
+
+       /*
+        * Apparantly HPUX has a buggy PAM that doesn't support the
+        * appdata_ptr. Fail if this is the case. JRA.
+        */
+
+       if (udp == NULL) {
+               DEBUG(0,("smb_pam_passchange_conv: PAM on this system is broken - appdata_ptr == NULL !\n"));
+               return PAM_CONV_ERR;
+       }
+
        /* Get the prompts... */
 
        if (!next_token(&p, currentpw_prompt, NULL, sizeof(fstring)))
@@ -179,8 +201,6 @@ static int smb_pam_passchange_conv(int num_msg,
        if (!next_token(&p, repeatpw_prompt, NULL, sizeof(fstring)))
                return PAM_CONV_ERR;
 
-       *resp = NULL;
-
        reply = malloc(sizeof(struct pam_response) * num_msg);
        if (!reply)
                return PAM_CONV_ERR;