[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b

aCaB acab at clamav.net
Sun Apr 4 01:00:08 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit 91a7f81edfc0ddefa80d5b0f7fc08b724c23100b
Author: aCaB <acab at clamav.net>
Date:   Thu Aug 20 17:03:34 2009 +0200

    fix last_page off by one

diff --git a/libclamav/fmap.c b/libclamav/fmap.c
index 29b2409..757f9c3 100644
--- a/libclamav/fmap.c
+++ b/libclamav/fmap.c
@@ -137,7 +137,7 @@ struct F_MAP *fmap(int fd, off_t offset, size_t len) {
 }
 
 static int fmap_readpage(struct F_MAP *m, unsigned int page) {
-    size_t readsz;
+    size_t readsz, got;
     char *pptr;
 
     fmap_inc_page(m, page);
@@ -149,8 +149,10 @@ static int fmap_readpage(struct F_MAP *m, unsigned int page) {
 	readsz = m->len % m->pgsz;
     else
 	readsz = m->pgsz;
-    if(pread(m->fd, pptr, m->pgsz, m->offset + page * m->pgsz) != readsz)
+    if((got=pread(m->fd, pptr, readsz, m->offset + page * m->pgsz)) != readsz) {
+	cli_warnmsg("pread fail: page %u pages %u map-offset %u - asked for %u bytes, got %u\n", page, m->pages, m->offset, readsz, got);
 	return 1;
+    }
     fmap_set_paged(m, page, 1);
     return 0;
 }
@@ -170,7 +172,7 @@ void *fmap_need_off(struct F_MAP *m, size_t at, size_t len) {
     }
     
     first_page = fmap_which_page(m, at);
-    last_page = fmap_which_page(m, at + len);    
+    last_page = fmap_which_page(m, at + len - 1);
 
     for(i=first_page; i<=last_page; i++) {
 	if(fmap_readpage(m, i))
@@ -198,7 +200,7 @@ void *fmap_need_str(struct F_MAP *m, void *ptr, size_t len) {
     }
 
     first_page = fmap_which_page(m, at);
-    last_page = fmap_which_page(m, at + len);    
+    last_page = fmap_which_page(m, at + len - 1);
 
     for(i=first_page; i<=last_page; i++) {
 	char *thispage = (char *)m + m->hdrsz;

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list