fix ACPI table validation after encountering signatures containing ! and _ (invalid)

This was SVN commit r7742.
This commit is contained in:
janwas 2010-07-12 13:01:12 +00:00
parent 98770fa4cc
commit 9f66c86d64

View File

@ -78,12 +78,14 @@ static bool ValidateTable(const AcpiTable* table, const char* signature = 0)
if(memcmp(table->signature, signature, 4) != 0) if(memcmp(table->signature, signature, 4) != 0)
return false; return false;
} }
// no specific signature is called for; just make sure it's 4 letters // no specific signature is called for, just validate the characters.
else else
{ {
for(size_t i = 0; i < 4; i++) for(size_t i = 0; i < 4; i++)
{ {
if(!isalpha(table->signature[i])) const char c = table->signature[i];
// "ASF!" and "____" have been encountered
if(!isalpha(c) && c != '_' && c != '!')
return false; return false;
} }
} }
@ -276,7 +278,7 @@ static void AllocateAndCopyTables(const AcpiTable**& tables, size_t& numTables)
#if ENABLE_MAHAF #if ENABLE_MAHAF
if(mahaf_IsPhysicalMappingDangerous()) if(mahaf_IsPhysicalMappingDangerous())
return; return;
if(!mahaf_Init()) if(mahaf_Init() != INFO::OK)
return; return;
RSDP rsdp; RSDP rsdp;