mirror of
https://github.com/aaru-dps/libaaruformat.git
synced 2025-12-16 19:24:40 +00:00
Refactor EDC calculation in ecc_cd.c to use memcpy for correct endianness.
This commit is contained in:
@@ -141,9 +141,9 @@ bool aaruf_ecc_cd_is_suffix_correct(void *context, const uint8_t *sector)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t stored_edc = (uint32_t)sector[0x808] | (uint32_t)sector[0x809] << 8 | (uint32_t)sector[0x80A] << 16 |
|
uint32_t stored_edc;
|
||||||
(uint32_t)sector[0x80B] << 24;
|
memcpy(&stored_edc, sector + 0x810, 4);
|
||||||
uint32_t calculated_edc = aaruf_edc_cd_compute(context, 0, sector + 16, size, pos);
|
uint32_t calculated_edc = aaruf_edc_cd_compute(context, 0, sector, 0x810, 0);
|
||||||
|
|
||||||
if(stored_edc != calculated_edc)
|
if(stored_edc != calculated_edc)
|
||||||
{
|
{
|
||||||
@@ -199,9 +199,12 @@ bool aaruf_ecc_cd_is_suffix_correct_mode2(void *context, const uint8_t *sector)
|
|||||||
TRACE("Exiting aaruf_ecc_cd_is_suffix_correct_mode2() = false");
|
TRACE("Exiting aaruf_ecc_cd_is_suffix_correct_mode2() = false");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
uint32_t stored_edc = (uint32_t)sector[0x92C] | (uint32_t)sector[0x92D] << 8 | (uint32_t)sector[0x92E] << 16 |
|
|
||||||
(uint32_t)sector[0x92F] << 24;
|
const int form2 = (sector[0x12] & 0x20);
|
||||||
uint32_t calculated_edc = aaruf_edc_cd_compute(context, 0, sector + 16, size, pos);
|
|
||||||
|
uint32_t stored_edc;
|
||||||
|
memcpy(&stored_edc, form2 ? sector + 0x92C : sector + 0x818, 4);
|
||||||
|
const uint32_t calculated_edc = aaruf_edc_cd_compute(context, 0, sector, form2 ? 0x91C : 0x808, 0x10);
|
||||||
|
|
||||||
TRACE("Exiting aaruf_ecc_cd_is_suffix_correct_mode2() = %u == %u", calculated_edc, stored_edc);
|
TRACE("Exiting aaruf_ecc_cd_is_suffix_correct_mode2() = %u == %u", calculated_edc, stored_edc);
|
||||||
return calculated_edc == stored_edc;
|
return calculated_edc == stored_edc;
|
||||||
|
|||||||
Reference in New Issue
Block a user