diff options
author | Phil Sutter <phil@nwl.cc> | 2017-08-24 19:14:10 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-08-24 19:20:29 +0200 |
commit | 80ee176dccf6954c8cc6493283ddadba42b8f694 (patch) | |
tree | a43b67b66a4d0c231ca971c137a134ef0a55ff9e /include | |
parent | a67af69a32cffbd727a48ea7b1d23ce92f1327ee (diff) |
scanner: Fix for memleak due to unclosed file pointer
When including a file, it is opened by fopen() and therefore needs to be
closed after scanning has finished using fclose(), otherwise valgrind
will report a memleak.
This patch changes struct input_descriptor to track the opened FILE
pointer instead of the file descriptor so the pointer is available for
closing in scanner_destroy().
While at it, change erec_print() to work on the open FILE pointer so it
doesn't have to call fileno() in beforehand. And as a little bonus, use
C99 initializer of the buffer to get rid of the call to memset().
Note that it is necessary to call erec_print_list() prior to destroying
the scanner, otherwise it will start manipulating an already freed FILE
pointer (and therefore crash the program).
Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'include')
-rw-r--r-- | include/nftables.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/nftables.h b/include/nftables.h index c992d302..b55e1440 100644 --- a/include/nftables.h +++ b/include/nftables.h @@ -113,7 +113,7 @@ struct input_descriptor { const char *name; union { const char *data; - int fd; + FILE *fp; }; unsigned int lineno; unsigned int column; |