Ptrx++;\r
}\r
\r
- ArgCountParsed = sscanf (\r
- Ptrx,\r
- "%x, %x, %x, { %x, %x, %x, %x, %x, %x, %x, %x }",\r
- &Guid.Data1,\r
- &Guid.Data2,\r
- &Guid.Data3,\r
- &Guid.Data4[0],\r
- &Guid.Data4[1],\r
- &Guid.Data4[2],\r
- &Guid.Data4[3],\r
- &Guid.Data4[4],\r
- &Guid.Data4[5],\r
- &Guid.Data4[6],\r
- &Guid.Data4[7]\r
- );\r
+ {\r
+ int byte_index;\r
+ // This is an array of UINT32s. sscanf will trash memory\r
+ // if you try to read into a UINT8 with a %x formatter.\r
+ UINT32 Guid_Data4[8];\r
+\r
+ ArgCountParsed = sscanf (\r
+ Ptrx,\r
+ "%x, %x, %x, { %x, %x, %x, %x, %x, %x, %x, %x }",\r
+ &Guid.Data1,\r
+ &Guid.Data2,\r
+ &Guid.Data3,\r
+ &Guid_Data4[0],\r
+ &Guid_Data4[1],\r
+ &Guid_Data4[2],\r
+ &Guid_Data4[3],\r
+ &Guid_Data4[4],\r
+ &Guid_Data4[5],\r
+ &Guid_Data4[6],\r
+ &Guid_Data4[7]\r
+ );\r
+ \r
+ // Now we can copy the 32 bit ints into the GUID.\r
+ for (byte_index=0; byte_index<8; byte_index++) {\r
+ Guid.Data4[byte_index] = (UINT8) Guid_Data4[byte_index];\r
+ }\r
+ }\r
\r
if (ArgCountParsed != 11) {\r
printf ("We have found an illegal GUID\n");\r
Ptrx++;\r
}\r
\r
- Ptrx++;\r
+ Ptrx++;\r
while (*Ptrx != '}') {\r
Ptrx++;\r
}\r
- //\r
+ //\r
// Absorb the closing }\r
//\r
Ptrx++;\r
Output_Flag = FALSE;\r
Pad_Flag = FALSE;\r
\r
- //\r
- // Output the calling arguments\r
- //\r
- printf ("\n\n");\r
- for (Index = 0; Index < argc; Index++) {\r
- printf ("%s ", argv[Index]);\r
- }\r
-\r
- printf ("\n\n");\r
-\r
if (argc < 5) {\r
printf ("Not enough arguments\n");\r
PrintGenDepexUsageInfo ();\r