PhysicalMemory: fix incorrect size value for large memory sticks

Fix #1061 (integer overflow)
This commit is contained in:
李通洲
2024-06-30 19:04:44 +08:00
parent 0e597a2ded
commit 2e1261bc21
@@ -100,11 +100,11 @@ const char* ffDetectPhysicalMemory(FFlist* result)
if (data->Size != 0xFFFF)
{
if (data->Size == 0x7FFF)
device->size = (data->ExtendedSize & ~(1 << 31)) * 1024 * 1024;
device->size = (data->ExtendedSize & ~(1ULL << 31)) * 1024ULL * 1024ULL;
else if (data->Size & (1 << 15))
{
// in kB
device->size = (data->Size & ~(1u << 15)) * 1024ULL;
device->size = (data->Size & ~(1ULL << 15)) * 1024ULL;
}
else
{