Allow load() and exec() methods to be NULL.
authorMichael Brown <mcb30@etherboot.org>
Sun, 14 Jan 2007 14:59:36 +0000 (14:59 +0000)
committerMichael Brown <mcb30@etherboot.org>
Sun, 14 Jan 2007 14:59:36 +0000 (14:59 +0000)
src/core/image.c

index b5ef7c5..7cf7f7b 100644 (file)
@@ -116,6 +116,11 @@ struct image * find_image ( const char *name ) {
 static int image_load_type ( struct image *image, struct image_type *type ) {
        int rc;
 
+       /* Check image is actually loadable */
+       if ( ! type->load )
+               return -ENOEXEC;
+
+       /* Try the image loader */
        if ( ( rc = type->load ( image ) ) != 0 ) {
                DBGC ( image, "IMAGE %p could not load as %s: %s\n",
                       image, type->name, strerror ( rc ) );
@@ -180,6 +185,10 @@ int image_exec ( struct image *image ) {
 
        assert ( image->type != NULL );
 
+       /* Check that image is actually executable */
+       if ( ! image->type->exec )
+               return -ENOEXEC;
+
        /* Try executing the image */
        if ( ( rc = image->type->exec ( image ) ) != 0 ) {
                DBGC ( image, "IMAGE %p could not execute: %s\n",