[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