From eb821aa5936a30ce4023297ce9f7fe1a7e631258 Mon Sep 17 00:00:00 2001 From: Martin Schlemmer Date: Tue, 30 Jul 2002 23:48:02 +0000 Subject: fix segfault in pam_wheel.so, resolving bug #5686 --- .../pam/files/pam-0.75-pam_wheel-segfault.patch | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 sys-libs/pam/files/pam-0.75-pam_wheel-segfault.patch (limited to 'sys-libs/pam/files') 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; -- cgit v1.2.3-65-gdbad