]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[image] Allow opaque URI component to provide image name
authorMichael Brown <mcb30@ipxe.org>
Fri, 29 Mar 2024 13:45:24 +0000 (13:45 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 29 Mar 2024 14:12:10 +0000 (14:12 +0000)
Some URI schemes allow for a path name to be specified via the opaque
component of the URI (e.g. "file:/script.ipxe" to specify a path on
the filesystem from which iPXE itself was loaded).  Files loaded from
such paths will currently fail to be assigned an appropriate name,
since only the path component of the URI will be used to construct a
default image name.

Fix by falling back to attempt deriving an image name from the opaque
component of a URI, if no path component is specified.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/image.c

index 3e65b5edf1a085f989d9ef90dfec4f1bbe145997..bf0e4f756386626e1b7a8b751cf367871c352c03 100644 (file)
@@ -134,10 +134,13 @@ int image_set_uri ( struct image *image, struct uri *uri ) {
        int rc;
 
        /* Set name, if image does not already have one */
-       if ( uri->path && ( ! ( image->name && image->name[0] ) ) ) {
-               name = basename ( ( char * ) uri->path );
-               if ( ( rc = image_set_name ( image, name ) ) != 0 )
-                       return rc;
+       if ( ! ( image->name && image->name[0] ) ) {
+               name = ( uri->path ? uri->path : uri->opaque );
+               if ( name ) {
+                       name = basename ( ( char * ) name );
+                       if ( ( rc = image_set_name ( image, name ) ) != 0 )
+                               return rc;
+               }
        }
 
        /* Update image URI */