[image] Avoid claiming zero-length images as valid
authorMichael Brown <mcb30@etherboot.org>
Mon, 16 Feb 2009 00:30:48 +0000 (00:30 +0000)
committerMichael Brown <mcb30@etherboot.org>
Mon, 16 Feb 2009 00:30:48 +0000 (00:30 +0000)
Both the script and PXE images types will claim a zero-length image.
Inhibit this to avoid end-user surprises.

src/arch/i386/image/pxe_image.c
src/image/script.c

index 3b5214d..90550d8 100644 (file)
@@ -88,6 +88,12 @@ int pxe_load ( struct image *image ) {
        if ( filesz > ( 0xa0000 - 0x7c00 ) )
                return -ENOEXEC;
 
+       /* Rejecting zero-length images is also useful, since these
+        * end up looking to the user like bugs in gPXE.
+        */
+       if ( ! filesz )
+               return -ENOEXEC;
+
        /* There are no signature checks for PXE; we will accept anything */
        if ( ! image->type )
                image->type = &pxe_image_type;
index 749131d..fe72288 100644 (file)
@@ -94,6 +94,12 @@ static int script_load ( struct image *image ) {
        static const char magic[] = "#!gpxe\n";
        char test[ sizeof ( magic ) - 1 ];
 
+       /* Sanity check */
+       if ( image->len < sizeof ( test ) ) {
+               DBG ( "Too short to be a script\n" );
+               return -ENOEXEC;
+       }
+
        /* Check for magic signature */
        copy_from_user ( test, image->data, 0, sizeof ( test ) );
        if ( memcmp ( test, magic, sizeof ( test ) ) != 0 ) {