From c165e8d1fc03c12549e222c65505fe954a199d77 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 25 Feb 2014 15:29:00 +0000 Subject: [image] Ensure every image has a fully resolved URI Signed-off-by: Michael Brown --- src/usr/imgmgmt.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'src/usr') diff --git a/src/usr/imgmgmt.c b/src/usr/imgmgmt.c index 1f1f6904..18cabbbc 100644 --- a/src/usr/imgmgmt.c +++ b/src/usr/imgmgmt.c @@ -48,13 +48,6 @@ int imgdownload ( struct uri *uri, struct image **image ) { char *uri_string_redacted; int rc; - /* Allocate image */ - *image = alloc_image ( uri ); - if ( ! *image ) { - rc = -ENOMEM; - goto err_alloc_image; - } - /* Construct redacted URI */ password = uri->password; if ( password ) @@ -63,12 +56,25 @@ int imgdownload ( struct uri *uri, struct image **image ) { uri->password = password; if ( ! uri_string_redacted ) { rc = -ENOMEM; - goto err_uri; + goto err_uri_string; + } + + /* Resolve URI */ + uri = resolve_uri ( cwuri, uri ); + if ( ! uri ) { + rc = -ENOMEM; + goto err_resolve_uri; + } + + /* Allocate image */ + *image = alloc_image ( uri ); + if ( ! *image ) { + rc = -ENOMEM; + goto err_alloc_image; } /* Create downloader */ - if ( ( rc = create_downloader ( &monojob, *image, LOCATION_URI, - uri ) ) != 0 ) { + if ( ( rc = create_downloader ( &monojob, *image ) ) != 0 ) { printf ( "Could not start download: %s\n", strerror ( rc ) ); goto err_create_downloader; } @@ -86,10 +92,12 @@ int imgdownload ( struct uri *uri, struct image **image ) { err_register_image: err_monojob_wait: err_create_downloader: - free ( uri_string_redacted ); - err_uri: image_put ( *image ); err_alloc_image: + uri_put ( uri ); + err_resolve_uri: + free ( uri_string_redacted ); + err_uri_string: return rc; } -- cgit v1.2.3-55-g7522