mirror of
https://github.com/Fennix-Project/Drivers.git
synced 2025-05-25 22:14:31 +00:00
Check checksum signature before reading the data
This commit is contained in:
parent
96530ad165
commit
7e60b1af9b
@ -770,6 +770,23 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
if (IdentifyData->Signature != 0xA5)
|
||||
Log("Port %d has no validity signature.", PortNumber);
|
||||
else
|
||||
{
|
||||
uint8_t *ptr = (uint8_t *)IdentifyData;
|
||||
uint8_t sum = 0;
|
||||
for (size_t i = 0; i < sizeof(ATA_IDENTIFY); i++)
|
||||
sum += ptr[i];
|
||||
if (sum != 0)
|
||||
{
|
||||
Log("Port %d has invalid checksum.", PortNumber);
|
||||
return;
|
||||
}
|
||||
else
|
||||
Log("Port %d has valid checksum.", PortNumber);
|
||||
}
|
||||
|
||||
auto swap = [](uint16_t *data, size_t size)
|
||||
{
|
||||
for (size_t i = 0; i < size; i++)
|
||||
@ -790,21 +807,6 @@ public:
|
||||
Log("Port %d is %s (%d rotation rate)", PortNumber,
|
||||
IdentifyData->NominalMediaRotationRate == 1 ? "SSD" : "HDD",
|
||||
IdentifyData->NominalMediaRotationRate);
|
||||
|
||||
if (IdentifyData->Signature != 0xA5)
|
||||
{
|
||||
Log("Port %d has no validity signature.", PortNumber);
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t *ptr = (uint8_t *)IdentifyData;
|
||||
uint8_t sum = 0;
|
||||
for (size_t i = 0; i < 512; i++)
|
||||
sum += ptr[i];
|
||||
if (sum != 0)
|
||||
Log("Port %d has invalid checksum.", PortNumber);
|
||||
else
|
||||
Log("Port %d has valid checksum.", PortNumber);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user