From d0bd3834633c1bb56b7cdbd7202db2925f3b5738 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 13 Aug 2012 22:14:57 +0100 Subject: [PATCH] [comboot] Accept only ".cbt" as an extension for COMBOOT images COMBOOT images are detected by looking for a ".com" or ".cbt" filename extension. There are widely-used files with a ".com" extension, such as "wdsnbp.com", which are PXE images rather than COMBOOT images. Avoid false detection of PXE images as COMBOOT images by accepting only a ".cbt" extension as indicating a COMBOOT image. Interestingly, this bug has been present for a long time but was frequently concealed because the filename was truncated to fit the fixed-length "name" field in struct image. (PXE binaries ending in ".com" tend to be related to Windows deployment products and so often use pathnames including backslashes, which iPXE doesn't recognise as a path separator and so treats as part of a very long filename.) Commit 1c127a6 ("[image] Simplify image management commands and internal API") made the image name a variable-length field, and so exposed this flaw in the COMBOOT image detection algorithm. Signed-off-by: Michael Brown --- src/arch/i386/image/comboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/i386/image/comboot.c b/src/arch/i386/image/comboot.c index 915ed2ded..1ec02331d 100644 --- a/src/arch/i386/image/comboot.c +++ b/src/arch/i386/image/comboot.c @@ -229,7 +229,7 @@ static int comboot_identify ( struct image *image ) { ++ext; - if ( strcasecmp( ext, "com" ) && strcasecmp( ext, "cbt" ) ) { + if ( strcasecmp( ext, "cbt" ) ) { DBGC ( image, "COMBOOT %p: unrecognized extension %s\n", image, ext ); return -ENOEXEC;