diff options
author | 2002-07-30 23:48:02 +0000 | |
---|---|---|
committer | 2002-07-30 23:48:02 +0000 | |
commit | eb821aa5936a30ce4023297ce9f7fe1a7e631258 (patch) | |
tree | 08dbf268fc5c2fab61dcf7c27a72bbb61ac2cc91 /sys-libs/pam/files | |
parent | locked down binutils to .7 again, otherwise glibc b0rks (diff) | |
download | gentoo-2-eb821aa5936a30ce4023297ce9f7fe1a7e631258.tar.gz gentoo-2-eb821aa5936a30ce4023297ce9f7fe1a7e631258.tar.bz2 gentoo-2-eb821aa5936a30ce4023297ce9f7fe1a7e631258.zip |
fix segfault in pam_wheel.so, resolving bug #5686
Diffstat (limited to 'sys-libs/pam/files')
-rw-r--r-- | sys-libs/pam/files/pam-0.75-pam_wheel-segfault.patch | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sys-libs/pam/files/pam-0.75-pam_wheel-segfault.patch b/sys-libs/pam/files/pam-0.75-pam_wheel-segfault.patch new file mode 100644 index 000000000000..ba38c3a56feb --- /dev/null +++ b/sys-libs/pam/files/pam-0.75-pam_wheel-segfault.patch @@ -0,0 +1,26 @@ +--- Linux-PAM-0.75/modules/pam_wheel/pam_wheel.c.orig Wed Jul 31 01:24:03 2002 ++++ Linux-PAM-0.75/modules/pam_wheel/pam_wheel.c Wed Jul 31 01:30:36 2002 +@@ -162,9 +162,20 @@ + fromsu = tpwd->pw_name; + } else { + fromsu = getlogin(); +- if (_pam_getpwnam_r(fromsu, &passwd, &tbuf, &tbuflen, &tpwd) != 0) +- tpwd = NULL; +- if((!fromsu) || (!tpwd)) { ++ /* If this one fails, we get a segfault on calling _pam_getpwnam_r(), ++ * so rather revert to behavior as with "ctrl & PAM_USE_UID_ARG" ++ */ ++ if (!fromsu) { ++ if (_pam_getpwuid_r(getuid(), &passwd, &tbuf, &tbuflen, &tpwd) != 0) ++ tpwd = NULL; ++ if (tpwd) { ++ fromsu = tpwd->pw_name; ++ } ++ } else { ++ if (_pam_getpwnam_r(fromsu, &passwd, &tbuf, &tbuflen, &tpwd) != 0) ++ tpwd = NULL; ++ } ++ if (!tpwd) { + if (ctrl & PAM_DEBUG_ARG) + _pam_log(LOG_NOTICE,"who is running me ?!"); + return PAM_SERVICE_ERR; |