SOURCES: pam-set-item.patch (NEW) - fix regression in pam_set_item

baggins baggins at pld-linux.org
Thu Apr 10 23:28:52 CEST 2008


Author: baggins                      Date: Thu Apr 10 21:28:52 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- fix regression in pam_set_item

---- Files affected:
SOURCES:
   pam-set-item.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/pam-set-item.patch
diff -u /dev/null SOURCES/pam-set-item.patch:1.1
--- /dev/null	Thu Apr 10 23:28:52 2008
+++ SOURCES/pam-set-item.patch	Thu Apr 10 23:28:47 2008
@@ -0,0 +1,65 @@
+Index: pam_item.c
+===================================================================
+RCS file: /cvsroot/pam/Linux-PAM/libpam/pam_item.c,v
+retrieving revision 1.16
+diff -u -p -r1.16 pam_item.c
+--- libpam/pam_item.c	3 Mar 2008 13:23:45 -0000	1.16
++++ libpam/pam_item.c	7 Apr 2008 09:04:50 -0000
+@@ -11,13 +11,15 @@
+ #include <string.h>
+ #include <syslog.h>
+ 
+-#define TRY_SET(X, Y)                  \
+-{                                      \
+-    char *_TMP_ = _pam_strdup(Y);      \
+-    if (_TMP_ == NULL && (Y) != NULL)  \
+-	 return PAM_BUF_ERR;           \
+-    free(X);                           \
+-    (X) = _TMP_;                       \
++#define TRY_SET(X, Y)                      \
++{                                          \
++    if ((X) != (Y)) {		           \
++	char *_TMP_ = _pam_strdup(Y);      \
++	if (_TMP_ == NULL && (Y) != NULL)  \
++	    return PAM_BUF_ERR;            \
++	free(X);                           \
++	(X) = _TMP_;                       \
++    }					   \
+ }
+ 
+ /* functions */
+@@ -76,8 +78,10 @@ int pam_set_item (pam_handle_t *pamh, in
+ 	 * modules.
+ 	 */
+ 	if (__PAM_FROM_MODULE(pamh)) {
+-	    _pam_overwrite(pamh->authtok);
+-	    TRY_SET(pamh->authtok, item);
++	    if (pamh->authtok != item) {
++		_pam_overwrite(pamh->authtok);
++		TRY_SET(pamh->authtok, item);
++	    }
+ 	} else {
+ 	    retval = PAM_BAD_ITEM;
+ 	}
+@@ -90,8 +94,10 @@ int pam_set_item (pam_handle_t *pamh, in
+ 	 * modules.
+ 	 */
+ 	if (__PAM_FROM_MODULE(pamh)) {
+-	    _pam_overwrite(pamh->oldauthtok);
+-	    TRY_SET(pamh->oldauthtok, item);
++	    if (pamh->oldauthtok != item) {
++		_pam_overwrite(pamh->oldauthtok);
++		TRY_SET(pamh->oldauthtok, item);
++	    }
+ 	} else {
+ 	    retval = PAM_BAD_ITEM;
+ 	}
+@@ -130,6 +136,8 @@ int pam_set_item (pam_handle_t *pamh, in
+ 	break;
+ 
+     case PAM_XAUTHDATA:
++	if (&pamh->xauth == item)
++	    break;
+ 	if (pamh->xauth.namelen) {
+ 	    _pam_overwrite(pamh->xauth.name);
+ 	    free(pamh->xauth.name);
================================================================


More information about the pld-cvs-commit mailing list