Re: libutil's logout doesn't clear utmp entries

Khem Raj <[email protected]> Mon, 17 Aug 2015 14:43:40 -0700
Newsgroups gmane.comp.lib.uclibc.general
Message-ID <[email protected]>
> On Aug 17, 2015, at 1:29 PM, Ata, John (US) <[email protected]> wrote:
> 
> Hi,
> 
> The module logout() in libutil does not actually remove the utmp entry that it attempts to do.  This is because it uses getutline() to read the utmp entry which is returned in utmp's internal static buffer.  It then modifies the static entry directly and attempts to write it out with pututline().  However, pututline() reads the original entry before writing it into the internal static buffer (only one internal utmp buffer) so it then always writes the original unchanged record back out.  One fix is to copy the static buffer into the temporary tmp stack variable (no longer needed) after reading but before writing.  This has been tested and appears to work well.
> 
> +--- uclibc/libutil/logout.c    2012-05-15 03:20:09.000000000 -0400
> ++++ uclibc/libutil/logout.c    2015-08-14 16:59:06.625944541 -0400
> +@@ -45,6 +45,10 @@
> +   /* Read the record.  */
> +   if ((ut = getutline(&tmp)) != NULL)

would it help if getutline was thread safe.

> +     {
> ++      /* We can't use the utmp static buffer on the rewrite so copy over */
> ++      memcpy(&tmp, ut, sizeof tmp);
> ++      ut = &tmp;
> ++
> +       /* Clear information about who & from where.  */
> +       memset (ut->ut_name, 0, sizeof ut->ut_name);
> + #if _HAVE_UT_HOST - 0
> 
> ------
> John Ata
> BAE Systems
> STOP Software Development
> 
> _______________________________________________
> uClibc mailing list
> [email protected]
> http://lists.busybox.net/mailman/listinfo/uclibc

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc
signature.asc (application/pgp-signature, 204 B)
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iEYEARECAAYFAlXSVZUACgkQuwUzVZGdMxTX0ACeK+CtljuIchHHnmslHjqBgjTm
7gwAn1zutg1vfxstBPIfC/oRUNyOBWRo
=Tizo
-----END PGP SIGNATURE-----