This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/6634] pututline_file() corrupts utmp file when internal_getut_r() returns -1 due to LOCK_FILE timeout.
- From: "halesh dot s at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: 26 Jun 2008 07:01:55 -0000
- Subject: [Bug libc/6634] pututline_file() corrupts utmp file when internal_getut_r() returns -1 due to LOCK_FILE timeout.
- References: <20080611211932.6634.rsa@us.ibm.com>
- Reply-to: sourceware-bugzilla at sourceware dot org
------- Additional Comments From halesh dot s at gmail dot com 2008-06-26 07:01 -------
Created an attachment (id=2800)
--> (http://sourceware.org/bugzilla/attachment.cgi?id=2800&action=view)
pututline() currupts the utmp file on fcntl() lock time out
In some scenarios pututline (3) may corrupt the utmp like with heavy system
load environment and using pututline frequently.
The failure analysis is in login/utmp_file.c internal_getut_r() function is not
retaining the lock error because of fcntl() failure so, pututline() is failing
to differentiate between utline not exists and utmp lock time out. As its
returning -1 in both cases. In both cases it treats as utline not found it
appends at the last.
Copy /var/run/utmp to current directory where you are executing tests.
who o/p Before Executing tests
==============================
$ who ./utmp
chill tty1 May 15 18:53
halesh pts/2 Jun 20 12:28
halesh pts/4 Jun 20 13:00
who o/p After executing tests
=============================
$ who ./utmp
chill tty1 May 15 18:53
halesh pts/2 Jun 20 12:28
halesh pts/4 Jun 20 13:00
chill tty1 May 15 18:53 <- ** THE FIRST LOGIN HAS BEEN APPENDED.
**utmp got currupted becuase of adding firstlogin entry again at the last
instead of replacing it.
If you are not able to reproduce please increase the LOOP macro in testcase.
--
http://sourceware.org/bugzilla/show_bug.cgi?id=6634
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.