summaryrefslogtreecommitdiff
path: root/source3/auth
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-05-01 18:25:20 +0000
committerJeremy Allison <jra@samba.org>2001-05-01 18:25:20 +0000
commit0961f7b494319e90c581016fda95be0b8eaf4229 (patch)
tree7fb3981ed9392bd77421aa87f9674dd34486ec56 /source3/auth
parente2a997f7a9d987fb96321a581fae9a5f3e8f4110 (diff)
downloadsamba-0961f7b494319e90c581016fda95be0b8eaf4229.tar.gz
samba-0961f7b494319e90c581016fda95be0b8eaf4229.tar.bz2
samba-0961f7b494319e90c581016fda95be0b8eaf4229.zip
Runtime check for broken PAM systems with no appdata_ptr support. This
should eventually be an autoconf test with a #ifdef workaround. I *HATE* pam :-). Jeremy. (This used to be commit 52a9226a5aaa769e960619c2bd0a561dd9b0493d)
Diffstat (limited to 'source3/auth')
-rw-r--r--source3/auth/pampass.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/source3/auth/pampass.c b/source3/auth/pampass.c
index 68024f9481..8f62d35317 100644
--- a/source3/auth/pampass.c
+++ b/source3/auth/pampass.c
@@ -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;