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