Hi,

attached is a small patch for phoenix part in bios_extract to replace
terrible filenames containing '*', '?' or '<'

also fixes 2 bufferoverflows in the filename handling.

mazzoo
diff --git a/phoenix.c b/phoenix.c
index dd630a1..83b86b4 100644
--- a/phoenix.c
+++ b/phoenix.c
@@ -61,9 +61,9 @@ PhoenixModuleNames[] = {
     {'H', "tcpa_H"}, /* TCPA (Trusted Computing), USBKCLIB? */
     {'K', "tcpa_K"}, /* TCPA (Trusted Computing), "AUTH"? */
     {'Q', "tcpa_Q"}, /* TCPA (Trusted Computing), "SROM"? */
-    {'<', "tcpa_<"},
-    {'*', "tcpa_*"},
-    {'?', "tcpa_?"},
+    {'<', "tcpa_LT"},
+    {'*', "tcpa_AS"},
+    {'?', "tcpa_QM"},
     {'J', "SmartCardPAS"},
 };
 
@@ -117,10 +117,10 @@ PhoenixModule(unsigned char *BIOSImage, int BIOSLength, int Offset)
 
     ModuleName = PhoenixModuleNameGet(Module->Type);
     if (ModuleName) {
-	filename = malloc(strlen(ModuleName) + 7);
+	filename = malloc(strlen(ModuleName) + 7 + 3);
 	sprintf(filename, "%s_%1d.rom", ModuleName, Module->Id);
     } else {
-	filename = malloc(9);
+	filename = malloc(9 + 3);
 	sprintf(filename, "%02X_%1d.rom", Module->Type, Module->Id);
     }
 
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to