On Mon, Sep 11, 2023 at 09:19:12AM -0500, Eric Blake wrote:
> On Mon, Sep 11, 2023 at 03:09:21PM +0100, Richard W.M. Jones wrote:
> > > > -  case SERVICE_MODE_UNIXSOCKET:
> > > > -    fprintf (fp, "nbd%s+unix://", tls == 2 ? "s" : "");
> > > > -    if (export_name && strcmp (export_name, "") != 0) {
> > > > -      putc ('/', fp);
> > > > -      uri_quote (export_name, fp);
> > > > -    }
> > > > -    fprintf (fp, "\\?socket=");
> > > > -    uri_quote (unixsocket, fp);
> > > 
> > > Beforehand, we were manually shell-quoting the ? in the Unix URI...
> > 
> > The shell quoting here was only marginally useful before this change.
> > In theory there might be a file in a subdirectory called
> > 'nbd+unix:/Xsocket=' which would match :-)
> 
> > > > +  switch (service_mode) {
> > > > +  case SERVICE_MODE_UNIXSOCKET:
> > > > +    fprintf (fp, "nbd%s+unix://", tls == 2 ? "s" : "");
> > > > +    if (export_name && strcmp (export_name, "") != 0) {
> > > > +      putc ('/', fp);
> > > > +      uri_quote (export_name, fp);
> > > > +    }
> > > > +    fprintf (fp, "?socket=");
> > > > +    uri_quote (unixsocket, fp);
> > > 
> > > ...where the manual shell-quoting is no longer injected.  Yes, this
> > > looks correct (the appearance of the quoting, using '' instead of \,
> > > may be different, but the resulting string as parsed by the shell is
> > > the same).
> 
> My point was that pre-patch, we had:
> 
> nbd+unix://\?socket=...
> 
> and post-patch, we have:
> 
> 'nbd+unix://?socket=...'
> 
> but both forms are equally quoted; after the shell removes \ or ''
> quoting, we are left with:
> 
> nbd+unix://?socket=...
> 
> and neither form allowed the glob expansion of the (unlikely) file
> nbd+unix:/Xsocket=...
> 
> My comment was more about why changing the fprintf("\\?socket=")
> pre-patch to fprintf("?socket=") post-patch was correct.

Agreed, thanks!

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v
_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to