------- Comment From holger.deng...@ibm.com 2024-01-11 13:09 EDT-------
(In reply to comment #9)
> Holger: I can't pretend speaking for the SRU team, but I'd be willing to bet
> that having "the fix is trivial" as a test plan would result in the SRU
> being trivially rejected :-).

@schopin: The API description of localtime_r() (man localtime_r)
describes, that the function can return a NULL pointer on error. The API
documentation of strftime() (man strftime) describes, that the last
parameter of the function should not be a NULL pointer. If a program put
the return value of localtime_r() as the last parameter in a strftime()
call, than we have a classical programming error. It is just a missing
NULL pointer check. That was the thing, that I meant with "trivial".
There are a lot of patches in many projects, which introduces NULL
pointer checks. For the most of them I guess, there was never a test
case or test plan.

So yes, if you find a way to cause a reproducible failure of
localtime_r(), you can write a testcase. But I'm not sure, if it is
worth to spend all that effort in a fix, which just fixes a missing NULL
pointer check...

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to pam in Ubuntu.
https://bugs.launchpad.net/bugs/2045250

Title:
  pam_lastlog doesn't handle localtime_r related errors properly

Status in Ubuntu on IBM z Systems:
  New
Status in pam package in Ubuntu:
  New
Status in pam package in Fedora:
  Fix Released

Bug description:
  The pam version(s) in Debian (checked buster) and Ubuntu (checked focal to 
noble) are affected by
  https://bugzilla.redhat.com/show_bug.cgi?id=2012871

  Customers report a command going through PAM crashing for a given user.
  A potential follow on issue can be that no ssh remote connections to an 
affected server are possible anymore, esp. painful with headless systems (was 
reported on a different distro).

  This is caused by an issue in modules/pam_lastlog/pam_lastlog.c:
  with tm = localtime_r(...) that can be NULL and needs to be handled.

  There are two such cases in modules/pam_lastlog/pam_lastlog.c (here noble):
  314-          ll_time = last_login.ll_time;
  315:          if ((tm = localtime_r (&ll_time, &tm_buf)) != NULL) {
  316-                  strftime (the_time, sizeof (the_time),
  317-                  /* TRANSLATORS: "strftime options for date of last 
login" */
  --
  574-
  575-      lf_time = utuser.ut_tv.tv_sec;
  576:      tm = localtime_r (&lf_time, &tm_buf);
  577-      strftime (the_time, sizeof (the_time),
  578-          /* TRANSLATORS: "strftime options for date of last login" */

  Case 1 (line 315) is properly handled, but not case 2 (line 576).

  The second case got fixed by:
  
https://github.com/linux-pam/linux-pam/commit/40c271164dbcebfc5304d0537a42fb42e6b6803c

  This fix should be included in Ubuntu (and Debian).

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2045250/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to