Don't leak utmpx entries on shutdown.
As far as I know, for all implementations of libutempter, the utempter_remove_added_record() function depends on the file descriptor passed to utempter_add_record() to still be valid. The reason for this, is that this file descriptor is propagated to the setuid utility that is responsible for modifying utmpx. Modify the code to remove the utmpx entry before closing the pseudo-terminal master device. While there, simply use utempter_remove_record(), which takes the file descriptor explicitly. The advantage is that this prevents potential foot-shooting in the future. Visual inspection of the source code will make it more obvious that utempter depends on the file descriptor. Closes #179.
This commit is contained in:
committed by
Keith Winstein
parent
59e8364178
commit
033953dcd2
+1
-1
@@ -149,7 +149,7 @@ AC_ARG_WITH([utempter],
|
||||
[with_utempter="$withval"],
|
||||
[with_utempter="check"])
|
||||
AS_IF([test x"$with_utempter" != xno],
|
||||
[AC_SEARCH_LIBS([utempter_remove_added_record], [utempter],
|
||||
[AC_SEARCH_LIBS([utempter_remove_record], [utempter],
|
||||
[AC_DEFINE([HAVE_UTEMPTER], [1], [Define if libutempter is available.])],
|
||||
[AS_IF([test x"$with_utempter" = xcheck],
|
||||
[AC_MSG_WARN([Unable to find libutempter; utmp entries will not be made.])],
|
||||
|
||||
Reference in New Issue
Block a user