[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-167-g4319a8f
edwin
edwin at 77e5149b-7576-45b1-b177-96237e5ba77b
Fri Jun 12 19:11:09 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 06fb93d370cb1268388036610be180c2e6be380d
Author: edwin <edwin at 77e5149b-7576-45b1-b177-96237e5ba77b>
Date: Fri Apr 10 15:20:18 2009 +0000
avoid size 1 reads for performance reasons (bb #1542).
git-svn-id: http://svn.clamav.net/svn/clamav-devel/trunk@5037 77e5149b-7576-45b1-b177-96237e5ba77b
diff --git a/ChangeLog b/ChangeLog
index 1fb6e4d..c96757e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Apr 10 18:20:12 EEST 2009 (edwin)
+-------------------------------------
+ * libclamav/vba_extract.c: avoid size 1 reads for performance
+ reasons (bb #1542).
+
Fri Apr 10 16:23:00 EEST 2009 (edwin)
-------------------------------------
* libclamav/pe.c, libclamav/special.c, libclamav/special.h: Fix some
diff --git a/libclamav/vba_extract.c b/libclamav/vba_extract.c
index dfc4d69..3597a76 100644
--- a/libclamav/vba_extract.c
+++ b/libclamav/vba_extract.c
@@ -1174,14 +1174,20 @@ cli_wm_decrypt_macro(int fd, off_t offset, uint32_t len, unsigned char key)
static int
skip_past_nul(int fd)
{
- char ch;
-
- do
- if(cli_readn(fd, &ch, 1) != 1)
- return FALSE;
- while(ch);
-
- return TRUE;
+ char *end;
+ char smallbuf[128];
+
+ do {
+ int nread = cli_readn(fd, smallbuf, sizeof(smallbuf));
+ if (nread <= 0)
+ return FALSE;
+ end = memchr(smallbuf, '\0', nread);
+ if (end) {
+ if (lseek(fd, 1 + (end-smallbuf) - nread, SEEK_CUR) < 0)
+ return FALSE;
+ return TRUE;
+ }
+ } while (1);
}
/*
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list