- (djm) Fix fd leak in loginrec.c (ro fd to lastlog was left open).

Report from Michal Zalewski <lcamtuf@coredump.cx>
This commit is contained in:
Damien Miller 2001-10-22 16:49:22 +10:00
parent 13aae5ee76
commit 3a8a5cd5b0
2 changed files with 19 additions and 12 deletions

View File

@ -1,3 +1,7 @@
20011022
- (djm) Fix fd leak in loginrec.c (ro fd to lastlog was left open).
Report from Michal Zalewski <lcamtuf@coredump.cx>
20011021
- (tim) [configure.in] Clean up library testing. Add optional PATH to
--with-pcre, --with-zlib, and --with-tcp-wrappers. Based on
@ -6740,4 +6744,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
$Id: ChangeLog,v 1.1610 2001/10/22 00:53:58 tim Exp $
$Id: ChangeLog,v 1.1611 2001/10/22 06:49:22 djm Exp $

View File

@ -163,7 +163,7 @@
#include "log.h"
#include "atomicio.h"
RCSID("$Id: loginrec.c,v 1.35 2001/10/02 00:29:00 stevesk Exp $");
RCSID("$Id: loginrec.c,v 1.36 2001/10/22 06:49:23 djm Exp $");
#ifdef HAVE_UTIL_H
# include <util.h>
@ -1487,17 +1487,20 @@ lastlog_get_entry(struct logininfo *li)
struct lastlog last;
int fd;
if (lastlog_openseek(li, &fd, O_RDONLY)) {
if (atomicio(read, fd, &last, sizeof(last)) != sizeof(last)) {
log("lastlog_get_entry: Error reading from %s: %s",
LASTLOG_FILE, strerror(errno));
return 0;
} else {
lastlog_populate_entry(li, &last);
return 1;
}
} else {
if (!lastlog_openseek(li, &fd, O_RDONLY))
return 0;
if (atomicio(read, fd, &last, sizeof(last)) != sizeof(last)) {
close(fd);
log("lastlog_get_entry: Error reading from %s: %s",
LASTLOG_FILE, strerror(errno));
return 0;
}
close(fd);
lastlog_populate_entry(li, &last);
return 1;
}
#endif /* USE_LASTLOG */