summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--modules/pam_pwdb/pam_pwdb.c5
-rw-r--r--modules/pam_unix/pam_unix_auth.c6
3 files changed, 5 insertions, 7 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 64161420..3139013b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -35,6 +35,7 @@ Where you should replace XXXXX with a bug-id.
0.73: please submit patches for this section with actual code/doc
patches!
+* "likeauth" fix for pam_unix and pam_pwdb which (Bug 113596 - agmorgan)
* fix for pam_unix (support.c) to avoid segfault with NULL password
(Bug 113238 - vorlon)
* fix to pam_unix_passwd: try repeatedly to get a lock on the password
diff --git a/modules/pam_pwdb/pam_pwdb.c b/modules/pam_pwdb/pam_pwdb.c
index 68ca68fd..4d335572 100644
--- a/modules/pam_pwdb/pam_pwdb.c
+++ b/modules/pam_pwdb/pam_pwdb.c
@@ -83,7 +83,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags
if ( on(UNIX_LIKE_AUTH, ctrl) ) {
D(("recording return code for next time [%d]", retval));
- pam_set_data(pamh, "pwdb_setcred_return", (void *) &retval, NULL);
+ pam_set_data(pamh, "pwdb_setcred_return", (void *) retval, NULL);
}
D(("done. [%s]", pam_strerror(pamh, retval)));
@@ -108,8 +108,7 @@ PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags
int *pretval = &retval;
D(("recovering return code from auth call"));
- pam_get_data(pamh, "pwdb_setcred_return", (const void **) &pretval);
- pam_set_data(pamh, "pwdb_setcred_return", NULL, NULL);
+ pam_get_data(pamh, "pwdb_setcred_return", (const void **) pretval);
D(("recovered data indicates that old retval was %d", retval));
}
diff --git a/modules/pam_unix/pam_unix_auth.c b/modules/pam_unix/pam_unix_auth.c
index a16118d6..7c639d88 100644
--- a/modules/pam_unix/pam_unix_auth.c
+++ b/modules/pam_unix/pam_unix_auth.c
@@ -88,9 +88,8 @@
if (on(UNIX_LIKE_AUTH, ctrl) && ret_data) { \
D(("recording return code for next time [%d]", \
retval)); \
- *ret_data = retval; \
pam_set_data(pamh, "unix_setcred_return", \
- (void *) ret_data, NULL); \
+ (void *) retval, NULL); \
} \
D(("done. [%s]", pam_strerror(pamh, retval))); \
return retval; \
@@ -205,8 +204,7 @@ PAM_EXTERN int pam_sm_setcred(pam_handle_t * pamh, int flags
int *pretval = NULL;
D(("recovering return code from auth call"));
- pam_get_data(pamh, "unix_setcred_return", (const void **) &pretval);
- pam_set_data(pamh, "unix_setcred_return", NULL, NULL);
+ pam_get_data(pamh, "unix_setcred_return", (const void **) pretval);
if(pretval) {
retval = *pretval;
free(pretval);