]> andersk Git - openssh.git/commitdiff
- (djm) Fix fd leak in loginrec.c (ro fd to lastlog was left open).
authordjm <djm>
Mon, 22 Oct 2001 06:49:22 +0000 (06:49 +0000)
committerdjm <djm>
Mon, 22 Oct 2001 06:49:22 +0000 (06:49 +0000)
   Report from Michal Zalewski <lcamtuf@coredump.cx>

ChangeLog
loginrec.c

index 29d9b30a5e0ce5b4aa68fa614bf6f23e3af1cf8e..066e0afd3eedf96332c7ea0d8be2ffe07039f2f0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index e1e9ce894127ef2eb08e21463afca3bc84e901f6..5e9f96fbd31a1eb473a819a1c5ec443e2e0e8774 100644 (file)
@@ -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 */
This page took 0.526886 seconds and 5 git commands to generate.