summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2002-07-30 23:48:02 +0000
committerMartin Schlemmer <azarah@gentoo.org>2002-07-30 23:48:02 +0000
commiteb821aa5936a30ce4023297ce9f7fe1a7e631258 (patch)
tree08dbf268fc5c2fab61dcf7c27a72bbb61ac2cc91 /sys-libs/pam/files
parentlocked down binutils to .7 again, otherwise glibc b0rks (diff)
downloadgentoo-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.patch26
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;