From fff8b461104e31a1c898c0c5ebe22e01196a5929 Mon Sep 17 00:00:00 2001 From: nvt-se Date: Mon, 3 Nov 2008 16:58:18 +0000 Subject: [PATCH] fixed a buffer bug with the micro logs --- core/cfs/cfs-coffee.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/cfs/cfs-coffee.c b/core/cfs/cfs-coffee.c index 77bcc89f0..a6859d130 100644 --- a/core/cfs/cfs-coffee.c +++ b/core/cfs/cfs-coffee.c @@ -567,7 +567,6 @@ read_log_page(struct file_header *hdr, int16_t last_entry, struct log_param *lp) base += sizeof(struct file_header) + log_entries * sizeof(page); base += (unsigned long)match_index * log_entry_size; base += lp->offset; - COFFEE_READ(lp->buf, lp->size, base); } @@ -964,7 +963,7 @@ cfs_read(int fd, void *buf, unsigned size) } /* Read from the original file if we cannot find the data in the log. */ if(r < 0) { - r = remains > COFFEE_PAGE_SIZE ? COFFEE_PAGE_SIZE : remains; + r = remains > hdr.log_entry_size ? hdr.log_entry_size : remains; COFFEE_READ((char *) buf + offset, r, ABS_OFFSET(fdp->file_page, base + offset)); } @@ -999,7 +998,7 @@ cfs_write(int fd, const void *buf, unsigned size) remains = size; while(remains) { lp.offset = fdp->offset; - lp.buf = buf; + lp.buf = &buf[size - remains]; lp.size = remains; i = write_log_page(fdp, &lp);