about summary refs log tree commit diff
path: root/login/Makefile
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2019-08-28 11:59:45 +0200
committerFlorian Weimer <fweimer@redhat.com>2019-08-28 11:59:45 +0200
commit61d3db428176d9d0822e4e680305fe34285edff2 (patch)
tree22ad4258b0d656bdf5ece29ade65a3e321a9a1b9 /login/Makefile
parent3a9d025fdd56f595ef9cb142486da4ee1b75281f (diff)
downloadglibc-61d3db428176d9d0822e4e680305fe34285edff2.tar.gz
glibc-61d3db428176d9d0822e4e680305fe34285edff2.tar.xz
glibc-61d3db428176d9d0822e4e680305fe34285edff2.zip
login: pututxline could fail to overwrite existing entries [BZ #24902]
The internal_getut_r function updates the file_offset variable and
therefore must always update last_entry as well.

Previously, if pututxline could not upgrade the read lock to a
write lock, internal_getut_r would update file_offset only,
without updating last_entry, and a subsequent call would not
overwrite the existing utmpx entry at file_offset, instead
creating a new entry.  This has been observed to cause unbounded
file growth in high-load situations.

This commit removes the buffer argument to internal_getut_r and
updates the last_entry variable directly, along with file_offset.

Initially reported and fixed by Ondřej Lysoněk.

Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Diffstat (limited to 'login/Makefile')
-rw-r--r--login/Makefile5
1 files changed, 4 insertions, 1 deletions
diff --git a/login/Makefile b/login/Makefile
index f9c4264087..93a3c8edf2 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -43,7 +43,8 @@ endif
 subdir-dirs = programs
 vpath %.c programs
 
-tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx
+tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \
+  tst-pututxline-lockfail
 
 # Build the -lutil library with these extra functions.
 extra-libs      := libutil
@@ -71,3 +72,5 @@ endif
 $(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force)
 	$(make-target-directory)
 	-$(INSTALL_PROGRAM) -m 4755 -o root $< $@
+
+$(objpfx)tst-pututxline-lockfail: $(shared-thread-library)