From: Amjad Alsharafi Date: Sat, 20 Jul 2024 10:13:30 +0000 (+0800) Subject: vvfat: Fix bug in writing to middle of file X-Git-Tag: qemu-xen-4.20.0~29^2~5 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b881cf00c99e03bc8a3648581f97736ff275b18b;p=qemu-xen.git vvfat: Fix bug in writing to middle of file Before this commit, the behavior when calling `commit_one_file` for example with `offset=0x2000` (second cluster), what will happen is that we won't fetch the next cluster from the fat, and instead use the first cluster for the read operation. This is due to off-by-one error here, where `i=0x2000 !< offset=0x2000`, thus not fetching the next cluster. Signed-off-by: Amjad Alsharafi Reviewed-by: Kevin Wolf Tested-by: Kevin Wolf Message-ID: Signed-off-by: Kevin Wolf --- diff --git a/block/vvfat.c b/block/vvfat.c index 086fedf474..a67cfa823b 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -2525,8 +2525,9 @@ commit_one_file(BDRVVVFATState* s, int dir_index, uint32_t offset) return -1; } - for (i = s->cluster_size; i < offset; i += s->cluster_size) + for (i = 0; i < offset; i += s->cluster_size) { c = modified_fat_get(s, c); + } fd = qemu_open_old(mapping->path, O_RDWR | O_CREAT | O_BINARY, 0666); if (fd < 0) {