diff options
author | Michael Brown <mcb30@etherboot.org> | 2007-06-28 17:55:29 +0100 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2007-06-28 17:55:29 +0100 |
commit | 4b08f4cf0f06b3345466f7d5d7ef4c04d45ecc56 (patch) | |
tree | 7bf42f686105cb65dc79bad8b789deca22f01d6e /src/usr/autoboot.c | |
parent | 7d6e4aab6fd9d53d9118a7913c44b6c568117597 (diff) | |
download | ipxe-4b08f4cf0f06b3345466f7d5d7ef4c04d45ecc56.zip ipxe-4b08f4cf0f06b3345466f7d5d7ef4c04d45ecc56.tar.gz ipxe-4b08f4cf0f06b3345466f7d5d7ef4c04d45ecc56.tar.bz2 |
Quick hack to get image booting working again
Diffstat (limited to 'src/usr/autoboot.c')
-rw-r--r-- | src/usr/autoboot.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c index 5d01722..3936e4c 100644 --- a/src/usr/autoboot.c +++ b/src/usr/autoboot.c @@ -99,19 +99,27 @@ void netboot ( struct net_device *netdev ) { return; } printf ( "Booting \"%s\"\n", filename ); - if ( ( rc = imgfetch ( filename, NULL, &image ) ) != 0 ) { + image = alloc_image(); + if ( ! image ) { + printf ( "Out of memory\n" ); + return; + } + if ( ( rc = imgfetch ( image, filename, 0 ) ) != 0 ) { printf ( "Could not retrieve %s: %s\n", filename, strerror ( rc ) ); + image_put ( image ); return; } if ( ( rc = imgload ( image ) ) != 0 ) { printf ( "Could not load %s: %s\n", image->name, strerror ( rc ) ); + image_put ( image ); return; } if ( ( rc = imgexec ( image ) ) != 0 ) { printf ( "Could not execute %s: %s\n", image->name, strerror ( rc ) ); + image_put ( image ); return; } } |