This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/6634] pututline_file() corrupts utmp file when internal_getut_r() returns -1 due to LOCK_FILE timeout.


------- 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]