Bug 1313537 - pam_lastlog may pass a NULL pointer to localtime_r
Summary: pam_lastlog may pass a NULL pointer to localtime_r
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: pam
Version: 7.2
Hardware: s390x
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Tomas Mraz
QA Contact: Dalibor Pospíšil
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-03-01 20:23 UTC by Paulo Andrade
Modified: 2019-10-10 11:23 UTC (History)
3 users (show)

Fixed In Version: pam-1.1.8-14.el7
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 1341167 (view as bug list)
Environment:
Last Closed: 2016-11-04 03:32:13 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2016:2314 0 normal SHIPPED_LIVE pam bug fix and enhancement update 2016-11-03 13:41:53 UTC

Description Paulo Andrade 2016-03-01 20:23:08 UTC
This problem is very difficult to reproduce. It did
happen all the time with the command:

$ su -

  The analysis of the code path shows:

    if (!(announce & LASTLOG_QUIET)) {

	if (last_login.ll_time) {

	    /* we want the date? */
	    if (announce & LASTLOG_DATE) {
	        struct tm *tm, tm_buf;
		time_t ll_time;

		ll_time = last_login.ll_time;
		tm = localtime_r (&ll_time, &tm_buf);
		strftime (the_time, sizeof (the_time),
	        /* TRANSLATORS: "strftime options for date of last login" */
			  _(" %a %b %e %H:%M:%S %Z %Y"), tm);

  The localtime_r call returns NULL, then it pass NULL
to strftime, and crashes.

  It should check the return value of localtime_r before
calling strftime.

  The user was told to execute:

# sed -e 's/\(pam_lastlog.so.*\)/\1 nodate/g' -i /etc/pam.d/postlogin

that fixed the problem, but more interestingly, after
reverting the sed script change, it continued to work,
so, the problem appears to have been a corrupted
last_login.ll_time, that may have been a corrupted
/var/log/lastlog

Comment 15 errata-xmlrpc 2016-11-04 03:32:13 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-2314.html


Note You need to log in before you can comment on or make changes to this bug.