[Libguestfs] [PATCH 2/3] New API: part-get-name (RHBZ#593511).
Richard W.M. Jones
rjones at redhat.com
Tue Feb 4 16:30:56 UTC 2014
On Tue, Feb 04, 2014 at 05:20:22PM +0100, Pino Toscano wrote:
> On Tuesday 04 February 2014 15:59:36 Richard W.M. Jones wrote:
> > On Tue, Feb 04, 2014 at 04:01:32PM +0100, Pino Toscano wrote:
> > > +static char *
> > > +extract_optionally_quoted (const char *value)
> > > +{
> > > + size_t value_len = strlen (value);
> > > +
> > > + if (value_len >= 2 &&
> > > + ((value[0] == '\'' && value[value_len - 1] == '\'') ||
> > > + (value[0] == '"' && value[value_len - 1] == '"'))) {
> > > + value_len -= 2;
> > > + ++value;
> > > + }
> > > +
> > > + char *ret = strndup (value, value_len);
> > > + if (ret == NULL) {
> > > + reply_with_perror ("strndup");
> > > + return NULL;
> > > + }
> > > +
> > > + return ret;
> > > +}
> >
> > My spidey sense asks what happens if the value contains quote
> > characters? I wonder if sgdisk escapes them.
> >
> > Rest of the patch looks fine, but I think you should try setting the
> > partition name to a few weird values and see what sgdisk does.
>
> It seems sgdisk just picks whatever it is being passed to it:
>
> ><rescue> sgdisk -c 3:test /dev/sda
> [ 129.149627] sda: sda1 sda2 sda3
> The operation has completed successfully.
> ><rescue> sgdisk -i 3 /dev/sda | grep name
> Partition name: 'test'
> ><rescue> sgdisk -c 3:test /dev/sda
> [ 146.992530] sda: sda1 sda2 sda3
> The operation has completed successfully.
> ><rescue> sgdisk -i 3 /dev/sda | grep name
> Partition name: 'test'
> ><rescue> sgdisk -c 3:"test" /dev/sda
> [ 194.584171] sda: sda1 sda2 sda3
> The operation has completed successfully.
> ><rescue> sgdisk -i 3 /dev/sda | grep name
> Partition name: 'test'
> ><rescue> sgdisk -c 3:'test' /dev/sda
> [ 202.042122] sda: sda1 sda2 sda3
> The operation has completed successfully.
> ><rescue> sgdisk -i 3 /dev/sda | grep name
> Partition name: 'test'
> ><rescue> sgdisk -c 3:"'test'" /dev/sda
> [ 211.002185] sda: sda1 sda2 sda3
> The operation has completed successfully.
> ><rescue> sgdisk -i 3 /dev/sda | grep name
> Partition name: ''test''
> ><rescue> sgdisk -c 3:'"test"' /dev/sda
> [ 217.441540] sda: sda1 sda2 sda3
> The operation has completed successfully.
> ><rescue> sgdisk -i 3 /dev/sda | grep name
> Partition name: '"test"'
>
> So the output is always single-quoted, with other quote characters just
> appearing as they were in the partition label.
OK, I'm sure that will catch us out in future when sgdisk
changes/fixes it :-(
ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
More information about the Libguestfs
mailing list