Forgot endian conversion for BAT entries

This commit is contained in:
shermp
2019-06-12 00:18:41 +12:00
parent 36b4842f52
commit 206ffa230c
2 changed files with 4 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
#include <stdlib.h>
#include <string.h>
#include "bswap.h"
#include "minivhd_internal.h"
#include "minivhd_util.h"
@@ -56,8 +57,9 @@ static void mvhd_write_sect_bitmap(MVHDMeta* vhdm, int blk) {
static void mvhd_write_bat_entry(MVHDMeta* vhdm, int blk) {
uint64_t table_offset = vhdm->sparse.bat_offset + (blk * sizeof vhdm->block[blk].offset);
uint32_t offset = cpu_to_be32(vhdm->block[blk].offset);
fseeko64(vhdm->f, table_offset, SEEK_SET);
fwrite(&vhdm->block[blk].offset, sizeof vhdm->block[blk].offset, 1, vhdm->f);
fwrite(&offset, sizeof offset, 1, vhdm->f);
}
static void mvhd_create_block(MVHDMeta* vhdm, int blk) {

View File

@@ -73,6 +73,7 @@ static MVHDBlock* mvhd_read_bat(MVHDMeta *vhdm, MVHDError* err) {
fseeko64(vhdm->f, vhdm->sparse.bat_offset, SEEK_SET);
for (uint32_t i = 0; i < vhdm->sparse.max_bat_ent; i++) {
fread(&vhdm->block[i].offset, sizeof vhdm->block[i].offset, 1, vhdm->f);
vhdm->block[i].offset = be32_to_cpu(vhdm->block[i].offset);
vhdm->block[i].bitmap = NULL;
vhdm->block[i].bitmap_cached = false;
}