From: Paolo Bonzini <pbonzini@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Vlad Lungu <vlad.lungu@windriver.com>,
qemu-devel@nongnu.org, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH] multiboot: copy the cmdline verbatim
Date: Wed, 14 Dec 2016 16:38:07 -0500 (EST) [thread overview]
Message-ID: <1509132582.4065072.1481751487408.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20161214175144.GN3808@thinpad.lan.raisama.net>
----- Original Message -----
> From: "Eduardo Habkost" <ehabkost@redhat.com>
> To: "Paolo Bonzini" <pbonzini@redhat.com>
> Cc: "Vlad Lungu" <vlad.lungu@windriver.com>, qemu-devel@nongnu.org, rth@twiddle.net
> Sent: Wednesday, December 14, 2016 6:51:44 PM
> Subject: Re: [PATCH] multiboot: copy the cmdline verbatim
>
> On Wed, Dec 14, 2016 at 06:20:46PM +0100, Paolo Bonzini wrote:
> > On 14/12/2016 18:00, Eduardo Habkost wrote:
> > > On Wed, Dec 14, 2016 at 05:55:07PM +0100, Paolo Bonzini wrote:
> > >>
> > >>
> > >> On 14/12/2016 17:19, Vlad Lungu wrote:
> > >>> get_opt_value() truncates the value at the first comma.
> > >>> Use memcpy() instead.
> > >>
> > >> Looks good since get_opt_value is already used by the caller. Have you
> > >> tested this with multiple initrd modules too?
> > >
> > > get_opt_value() is used by the caller, but with NULL buf
> > > argument. This means the caller doesn't handle ",," escaping.
> > > (See my reply to the previous submission of this patch)
> >
> > Hmm, wait. When NULL is passed, ",," escaping is handled correctly in
> > that next_initrd points to the next lone comma. The lone comma is
> > replaced with a '\0' by the caller.
>
> It is handled correctly when splitting the string, but not when opening the
> file.
>
> >
> > So you need to use get_opt_value again in mb_add_cmdline to do the
> > unescaping, because mb_add_cmdline only receives double commas.
> >
> > This was actually my first reaction to the patch, and it was correct.
> > Then I overthought it. :)
> >
> > So the patch is wrong.
>
> Except that the caller is already broken when using ",," for a
> different reason: it calls get_image_size(initrd_filename) and
> load_image(initrd_filename, ...) directly. So comma-escaping
> never worked anyway:
>
> $ qemu-system-x86_64 -kernel ~/Downloads/gnumach -initrd
> /tmp/one,,file,/tmp/another,,file
> Failed to open file '/tmp/one,,file'
>
> The right fix for comma-escaping would require calling
> get_opt_value() with non-NULL buf outside mb_add_cmdline(),
> because the mb_add_cmdline(&mbs, kcmdline) call do NOT need
> get_opt_value() to be called.
For filenames containing commas you're right, but...
> In other words: this fixes the mb_add_cmdline(kcmdline) case, and
> doesn't break comma escaping on the initrd case (because it was
> already broken). I don't see a problem with this patch.
... there is one case of comma escaping that wasn't broken:
$ qemu-system-x86_64 -kernel foo -initrd '/tmp/one arg,,with,,commas,/tmp/another arg,,with,,commas'
And presumably this is what Vlad was trying to do.
Paolo
next prev parent reply other threads:[~2016-12-14 21:38 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-14 16:19 [Qemu-devel] [PATCH] multiboot: copy the cmdline verbatim Vlad Lungu
2016-12-14 16:55 ` Paolo Bonzini
2016-12-14 17:00 ` Eduardo Habkost
2016-12-14 17:20 ` Paolo Bonzini
2016-12-14 17:51 ` Eduardo Habkost
2016-12-14 21:38 ` Paolo Bonzini [this message]
2016-12-14 22:26 ` Eduardo Habkost
2016-12-14 22:32 ` Paolo Bonzini
2016-12-15 9:44 ` Vlad Lungu
-- strict thread matches above, loose matches on Subject: below --
2016-12-14 13:35 Vlad Lungu
2016-12-14 14:38 ` Eduardo Habkost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1509132582.4065072.1481751487408.JavaMail.zimbra@redhat.com \
--to=pbonzini@redhat.com \
--cc=ehabkost@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=vlad.lungu@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.