From 1feea75dbf1d6108008f169c1e9c4763ad291d3b Mon Sep 17 00:00:00 2001 From: Trog Date: Thu, 6 May 2004 15:21:33 +0000 Subject: [PATCH] Fix fd leak in Word6 macro code. git-svn: trunk@542 --- clamav-devel/ChangeLog | 4 ++++ clamav-devel/libclamav/vba_extract.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/clamav-devel/ChangeLog b/clamav-devel/ChangeLog index ce0938f1e..8137adf60 100644 --- a/clamav-devel/ChangeLog +++ b/clamav-devel/ChangeLog @@ -1,3 +1,7 @@ +Thu May 6 16:22:32 BST 2004 (trog) +----------------------------------- + * libclamav/vba_extract.c: Fix fd leak in Word6 macro code. + Thu May 6 12:27:03 BST 2004 (njh) ---------------------------------- * libclamav/mbox.c: Ensure all attachements marked as RFC822 emails will diff --git a/clamav-devel/libclamav/vba_extract.c b/clamav-devel/libclamav/vba_extract.c index 37dd9889a..4b5766084 100644 --- a/clamav-devel/libclamav/vba_extract.c +++ b/clamav-devel/libclamav/vba_extract.c @@ -1205,12 +1205,14 @@ vba_project_t *wm_dir_read(const char *dir) } if (!wm_read_fib(fd, &fib)) { + close(fd); return NULL; } wm_print_fib(&fib); if (lseek(fd, fib.macro_offset, SEEK_SET) != fib.macro_offset) { cli_dbgmsg("lseek macro_offset failed\n"); + close(fd); return NULL; } @@ -1218,6 +1220,7 @@ vba_project_t *wm_dir_read(const char *dir) if (cli_readn(fd, &start_id, 1) != 1) { cli_dbgmsg("read start_id failed\n"); + close(fd); return NULL; } cli_dbgmsg("start_id: %d\n", start_id); @@ -1225,6 +1228,7 @@ vba_project_t *wm_dir_read(const char *dir) while ((lseek(fd, 0, SEEK_CUR) < end_offset) && !done) { if (cli_readn(fd, &info_id, 1) != 1) { cli_dbgmsg("read macro_info failed\n"); + close(fd); return NULL; } switch (info_id) { @@ -1337,6 +1341,7 @@ abort: if (macro_intnames) { wm_free_intnames(macro_intnames); } + close(fd); return vba_project; }