From cee86c13d7e84bcc0c3127d08ec70bb9000b3d7c Mon Sep 17 00:00:00 2001 From: Trog Date: Wed, 17 Mar 2004 11:45:15 +0000 Subject: [PATCH] VBA alignment check. Should now work with all MacOffice documents. git-svn: trunk@406 --- clamav-devel/ChangeLog | 5 +++++ clamav-devel/libclamav/vba_extract.c | 15 ++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/clamav-devel/ChangeLog b/clamav-devel/ChangeLog index 4387a2ae3..24a79731b 100644 --- a/clamav-devel/ChangeLog +++ b/clamav-devel/ChangeLog @@ -1,3 +1,8 @@ +Wed Mar 17 11:53:05 GMT 2004 (trog) +----------------------------------- + * libclamav/vba_extract.c: VBA alignment check. Should now work with + all MacOffice documents. + Wed Mar 17 09:32:45 GMT 2004 (trog) ----------------------------------- * libclamav/vba_extract.c: Add support for MacOffice98 documents diff --git a/clamav-devel/libclamav/vba_extract.c b/clamav-devel/libclamav/vba_extract.c index d0030de1c..cf96a6ab7 100644 --- a/clamav-devel/libclamav/vba_extract.c +++ b/clamav-devel/libclamav/vba_extract.c @@ -297,11 +297,6 @@ vba_project_t *vba56_dir_read(const char *dir) cli_dbgmsg("VBA Project: %s, VBA Version=%d\n", vba_version[i].name, vba_version[i].vba_version); - if (i == 9) { - cli_dbgmsg("MacOffice2001 not currently supported\n"); - close(fd); - return NULL; - } is_mac = vba_version[i].is_mac; /*****************************************/ @@ -497,6 +492,16 @@ vba_project_t *vba56_dir_read(const char *dir) return NULL; } } while(ooff != 0xFFFF); + + /* check for alignment error */ + lseek(fd, -3, SEEK_CUR); + if (vba_readn(fd, &ooff, 2) != 2) { + close(fd); + return NULL; + } + if (ooff != 0xFFFF) { + lseek(fd, 1, SEEK_CUR); + } if (vba_readn(fd, &ooff, 2) != 2) { close(fd);