tools: Fix FILE memory leak in gpg-connect-agent.
authorWerner Koch <wk@gnupg.org>
Wed, 24 Oct 2018 18:04:52 +0000 (20:04 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 24 Oct 2018 18:04:52 +0000 (20:04 +0200)
* tools/gpg-connect-agent.c (do_open): dup the fileno and close the
stream.

GnuPG-bug-id: 4220
Signed-off-by: Werner Koch <wk@gnupg.org>
tools/gpg-connect-agent.c

index 00482a3..7eb7ffa 100644 (file)
@@ -983,7 +983,7 @@ do_open (char *line)
                  name, mode, strerror (errno));
       return;
     }
                  name, mode, strerror (errno));
       return;
     }
-  fd = fileno (fp);
+  fd = dup (fileno (fp));
   if (fd >= 0 && fd < DIM (open_fd_table))
     {
       open_fd_table[fd].inuse = 1;
   if (fd >= 0 && fd < DIM (open_fd_table))
     {
       open_fd_table[fd].inuse = 1;
@@ -1030,8 +1030,10 @@ do_open (char *line)
   else
     {
       log_error ("can't put fd %d into table\n", fd);
   else
     {
       log_error ("can't put fd %d into table\n", fd);
-      close (fd);
+      if (fd != -1)
+        close (fd); /* Table was full.  */
     }
     }
+  fclose (fp);
 }
 
 
 }