diff options
author | Thomas Schmitt <scdbackup@gmx.net> | 2014-06-22 22:24:18 +0200 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2014-06-23 19:48:55 -0700 |
commit | ee9c8a36dc63c54794f5836d5c908d7e4c84fa04 (patch) | |
tree | 0394733bfe8791d3bf9dfdee4974dddd5f945492 | |
parent | 8059839edcfe819ca9cd135c67a905eb53943204 (diff) | |
download | syslinux-ee9c8a36dc63c54794f5836d5c908d7e4c84fa04.tar.gz syslinux-ee9c8a36dc63c54794f5836d5c908d7e4c84fa04.tar.xz syslinux-ee9c8a36dc63c54794f5836d5c908d7e4c84fa04.zip |
utils/isohybrid.c: Correct blocking factor in APM partition block counts
The block counts in the APM partitions assumed 512 bytes per block,
whereas the start block numbers assume 2048 as announced in the APM header.
This change divides the affected block counts by 4 to correct the assumption.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | utils/isohybrid.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/utils/isohybrid.c b/utils/isohybrid.c index c5b42814..7d0864ec 100644 --- a/utils/isohybrid.c +++ b/utils/isohybrid.c @@ -842,7 +842,7 @@ initialise_apm(uint8_t *gpt, uint32_t start) part->signature = bendian_short(0x504d); part->map_count = bendian_int(apm_parts); part->start_block = bendian_int(1); - part->block_count = bendian_int(0x10); + part->block_count = bendian_int(4); strcpy(part->name, "Apple"); strcpy(part->type, "Apple_partition_map"); part->data_start = bendian_int(0); @@ -854,11 +854,11 @@ initialise_apm(uint8_t *gpt, uint32_t start) part->signature = bendian_short(0x504d); part->map_count = bendian_int(3); part->start_block = bendian_int(efi_lba); - part->block_count = bendian_int(efi_count); + part->block_count = bendian_int(efi_count / 4); strcpy(part->name, "EFI"); strcpy(part->type, "Apple_HFS"); part->data_start = bendian_int(0); - part->data_count = bendian_int(efi_count); + part->data_count = bendian_int(efi_count / 4); part->status = bendian_int(0x33); part = (struct apple_part_header *)(gpt + 4096); @@ -868,11 +868,11 @@ initialise_apm(uint8_t *gpt, uint32_t start) part->signature = bendian_short(0x504d); part->map_count = bendian_int(3); part->start_block = bendian_int(mac_lba); - part->block_count = bendian_int(mac_count); + part->block_count = bendian_int(mac_count / 4); strcpy(part->name, "EFI"); strcpy(part->type, "Apple_HFS"); part->data_start = bendian_int(0); - part->data_count = bendian_int(mac_count); + part->data_count = bendian_int(mac_count / 4); part->status = bendian_int(0x33); } else { part->signature = bendian_short(0x504d); |