path: root/include
diff options
authorPhil Sutter <>2017-08-24 19:14:10 +0200
committerPablo Neira Ayuso <>2017-08-24 19:20:29 +0200
commit80ee176dccf6954c8cc6493283ddadba42b8f694 (patch)
treea43b67b66a4d0c231ca971c137a134ef0a55ff9e /include
parenta67af69a32cffbd727a48ea7b1d23ce92f1327ee (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 <>
Diffstat (limited to 'include')
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;