[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCHv3] multiboot: copy the cmdline verbatim, unescap
From: |
Vlad Lungu |
Subject: |
Re: [Qemu-devel] [PATCHv3] multiboot: copy the cmdline verbatim, unescape module strings |
Date: |
Mon, 19 Dec 2016 11:35:34 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 12/18/2016 10:25 PM, Eduardo Habkost wrote:
> On Thu, Dec 15, 2016 at 02:32:04PM +0200, Vlad Lungu wrote:
>> get_opt_value() truncates the value at the first comma
>> Use memcpy() instead
>> Unescape the module filename and parameters with get_opt_value()
>> before calling mb_add_cmdline()
>>
>> Signed-off-by: Vlad Lungu <address@hidden>
>> ---
>> hw/i386/multiboot.c | 19 +++++++++----------
>> 1 file changed, 9 insertions(+), 10 deletions(-)
>>
>> diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c
>> index 387caa6..6b7b5a9 100644
>> --- a/hw/i386/multiboot.c
>> +++ b/hw/i386/multiboot.c
>> @@ -109,7 +109,7 @@ static uint32_t mb_add_cmdline(MultibootState *s, const
>> char *cmdline)
>> hwaddr p = s->offset_cmdlines;
>> char *b = (char *)s->mb_buf + p;
>>
>> - get_opt_value(b, strlen(cmdline) + 1, cmdline);
>> + memcpy(b, cmdline, strlen(cmdline) + 1);
>> s->offset_cmdlines += strlen(b) + 1;
>> return s->mb_buf_phys + p;
>> }
>> @@ -287,7 +287,7 @@ int load_multiboot(FWCfgState *fw_cfg,
>> mbs.offset_bootloader = mbs.offset_cmdlines + cmdline_len;
>>
>> if (initrd_filename) {
>> - char *next_initrd, not_last;
>> + char *next_initrd, not_last, tmpbuf[strlen(initrd_filename) + 1];
>>
>> mbs.offset_mods = mbs.mb_buf_size;
>>
>> @@ -296,25 +296,24 @@ int load_multiboot(FWCfgState *fw_cfg,
>> int mb_mod_length;
>> uint32_t offs = mbs.mb_buf_size;
>>
>> - next_initrd = (char *)get_opt_value(NULL, 0, initrd_filename);
>> + next_initrd = (char *)get_opt_value(tmpbuf,
>> strlen(initrd_filename) + 1, initrd_filename);
> I would prefer to use sizeof(initrd_filename) like Paolo
> suggested.
sizeof(initrd_filename) is 8 (on my machine, x86_64). Maybe sizeof(tmpbuf)
would be a better idea :-)
Regards,
Vlad