On Sun, Sep 22, 2024 at 08:51:22PM GMT, Richard W.M. Jones wrote: > On Thu, Mar 28, 2024 at 02:13:42PM +0000, Richard W.M. Jones wrote: > > On Thu, Mar 28, 2024 at 03:06:03PM +0100, Thomas Huth wrote: > > > Since version 2.66, glib has useful URI parsing functions, too. > > > Use those instead of the QEMU-internal ones to be finally able > > > to get rid of the latter. The g_uri_get_host() also takes care > > > of removing the square brackets from IPv6 addresses, so we can > > > drop that part of the QEMU code now, too. > > >
> > > > > > - p = uri->path ? uri->path : ""; > > > + p = g_uri_get_path(uri) ?: ""; > > > if (p[0] == '/') { > > > p++; > > > } > > Looks ok, > > > > Reviewed-by: Richard W.M. Jones <rjo...@redhat.com> > > Or maybe not. This caused a regression in the nbdkit test suite (when > we use qemu-img from 9.1). It seems the exportname part of the NBD > URI gets munged: > > https://gitlab.com/qemu-project/qemu/-/issues/2584 To be more specific, it looks like g_uri_get_path("./name//with//..//slashes") is getting munged to "name/slashes". That is, glib is blindly assuming that ./ and XXX/../ can be dropped, and // can be simplified to /, which may be true for arbitrary file names but not true for abitrary URIs (since URIs have application-specific semantics, which may not match path name traversal semantics). Looks like we need to report a bug to glib, and/or see if glib's URI functions have a flag for turning off this unwanted munging. Or we may just want to document this corner case change as intentional. -- Eric Blake, Principal Software Engineer Red Hat, Inc. Virtualization: qemu.org | libguestfs.org