Fix a bug caused by sscanf trashing memory.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@280 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
bbahnsen 2006-05-25 18:18:27 +00:00
parent fbf910a5a0
commit 8d3adb745f
1 changed files with 27 additions and 15 deletions

View File

@ -690,22 +690,34 @@ Returns:
Ptrx++;
}
{
int byte_index;
// This is an array of UINT32s. sscanf will trash memory
// if you try to read into a UINT8 with a %x formatter.
UINT32 Guid_Data4[8];
ArgCountParsed = sscanf (
Ptrx,
"%x, %x, %x, { %x, %x, %x, %x, %x, %x, %x, %x }",
&Guid.Data1,
&Guid.Data2,
&Guid.Data3,
&Guid.Data4[0],
&Guid.Data4[1],
&Guid.Data4[2],
&Guid.Data4[3],
&Guid.Data4[4],
&Guid.Data4[5],
&Guid.Data4[6],
&Guid.Data4[7]
&Guid_Data4[0],
&Guid_Data4[1],
&Guid_Data4[2],
&Guid_Data4[3],
&Guid_Data4[4],
&Guid_Data4[5],
&Guid_Data4[6],
&Guid_Data4[7]
);
// Now we can copy the 32 bit ints into the GUID.
for (byte_index=0; byte_index<8; byte_index++) {
Guid.Data4[byte_index] = (UINT8) Guid_Data4[byte_index];
}
}
if (ArgCountParsed != 11) {
printf ("We have found an illegal GUID\n");
printf ("Fix your depex\n");