summaryrefslogtreecommitdiff
path: root/loginrec.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2000-08-18 14:08:38 +1000
committerDamien Miller <djm@mindrot.org>2000-08-18 14:08:38 +1000
commitc1132e77590706c9e8bf56673a05f1a8b668bc76 (patch)
tree7434728191faf5888aa54705befaae5feab4d19f /loginrec.c
parent61c51508615381765249e6ef1f9f843de2f3d5b6 (diff)
downloadopenssh-git-c1132e77590706c9e8bf56673a05f1a8b668bc76.tar.gz
- (djm) Lastlog was not getting closed after writing login entry
Diffstat (limited to 'loginrec.c')
-rw-r--r--loginrec.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/loginrec.c b/loginrec.c
index 6b87ba32..2c6330a0 100644
--- a/loginrec.c
+++ b/loginrec.c
@@ -160,7 +160,7 @@
#include "xmalloc.h"
#include "loginrec.h"
-RCSID("$Id: loginrec.c,v 1.20 2000/08/15 00:21:17 djm Exp $");
+RCSID("$Id: loginrec.c,v 1.21 2000/08/18 04:08:38 djm Exp $");
/**
** prototypes for helper functions in this file
@@ -1403,17 +1403,19 @@ lastlog_perform_login(struct logininfo *li)
/* create our struct lastlog */
lastlog_construct(li, &last);
+ if (!lastlog_openseek(li, &fd, O_RDWR|O_CREAT))
+ return(0);
+
/* write the entry */
- if (lastlog_openseek(li, &fd, O_RDWR|O_CREAT)) {
- if (atomicio(write, fd, &last, sizeof(last)) != sizeof(last)) {
- log("lastlog_write_filemode: Error writing to %s: %s",
- LASTLOG_FILE, strerror(errno));
- return 0;
- }
- return 1;
- } else {
+ if (atomicio(write, fd, &last, sizeof(last)) != sizeof(last)) {
+ close(fd);
+ log("lastlog_write_filemode: Error writing to %s: %s",
+ LASTLOG_FILE, strerror(errno));
return 0;
}
+
+ close(fd);
+ return 1;
}
int