From 51f155d73ec7287bc052fd6b6e9c7ab59029bcb3 Mon Sep 17 00:00:00 2001 From: shermp <14854761+shermp@users.noreply.github.com> Date: Sun, 9 Jun 2019 15:02:31 +1200 Subject: [PATCH] Fix VHD reading errors --- src/minivhd_manage.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/minivhd_manage.c b/src/minivhd_manage.c index 5f0139c..f8447fe 100644 --- a/src/minivhd_manage.c +++ b/src/minivhd_manage.c @@ -35,7 +35,7 @@ static void mvhd_read_footer(MVHDMeta* vhdm) { static void mvhd_read_sparse_header(MVHDMeta* vhdm) { uint8_t buffer[MVHD_SPARSE_SIZE]; - fseeko64(vhdm->f, -MVHD_SPARSE_SIZE, SEEK_END); + fseeko64(vhdm->f, vhdm->footer.data_offset, SEEK_SET); fread(buffer, sizeof buffer, 1, vhdm->f); mvhd_buffer_to_header(&vhdm->sparse, buffer); } @@ -57,7 +57,7 @@ static uint32_t mvhd_gen_sparse_checksum(MVHDMeta* vhdm) { vhdm->sparse.checksum = 0; uint8_t* sparse_bytes = (uint8_t*)&vhdm->sparse; for (size_t i = 0; i < sizeof vhdm->sparse; i++) { - new_chk = sparse_bytes[i]; + new_chk += sparse_bytes[i]; } vhdm->sparse.checksum = orig_chk; return ~new_chk;