diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2021-10-13 13:19:15 -0400 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2021-10-13 13:19:15 -0400 |
commit | 5860e0e9372f89f4fc32b225c3bd7b7de91b78c1 (patch) | |
tree | 62c74e9b84d9ffec81d5dee5b7ab35db39882acf /src | |
parent | e26f9d10d7bebee5ea512fc4729ce6adafec66a0 (diff) |
Disallow negative sizes in SAVEBLOCK_CHUNK
Diffstat (limited to 'src')
-rw-r--r-- | src/save.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/save.c b/src/save.c index 52301df03..a05d2c184 100644 --- a/src/save.c +++ b/src/save.c @@ -43,11 +43,12 @@ static u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location); // (u8 *)structure was removed from the first statement of the macro in Emerald. // This is because malloc is used to allocate addresses so storing the raw // addresses should not be done in the offsets information. -#define SAVEBLOCK_CHUNK(structure, chunkNum) \ -{ \ - chunkNum * SECTOR_DATA_SIZE, \ - min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ -} \ +#define SAVEBLOCK_CHUNK(structure, chunkNum) \ +{ \ + chunkNum * SECTOR_DATA_SIZE, \ + sizeof(structure) >= chunkNum * SECTOR_DATA_SIZE ? \ + min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) : 0 \ +} static const struct SaveSectionOffsets sSaveSectionOffsets[] = { |