From c1132e77590706c9e8bf56673a05f1a8b668bc76 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Fri, 18 Aug 2000 14:08:38 +1000 Subject: [PATCH] - (djm) Lastlog was not getting closed after writing login entry --- ChangeLog | 1 + loginrec.c | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2f5cee9a2..106c1459a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -38,6 +38,7 @@ - markus@cvs.openbsd.org 2000/08/17 14:06:34 [session.c sshd.8 sshd.c] sshd -u len, similar to telnetd + - (djm) Lastlog was not getting closed after writing login entry 20000816 - (djm) Replacement for inet_ntoa for Irix (which breaks on gcc) diff --git a/loginrec.c b/loginrec.c index 6b87ba320..2c6330a04 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