mirror of
https://github.com/Cisco-Talos/clamav.git
synced 2026-05-24 08:17:53 -04:00
fix last_page off by one
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user