[libvirt] [PATCH] virsh: avoid uninitialized memory usage

Alex Jia ajia at redhat.com
Thu Apr 19 08:40:22 UTC 2012


On 04/19/2012 04:19 PM, Wen Congyang wrote:
> At 04/19/2012 04:09 PM, Alex Jia Wrote:
>> Detected by valgrind.
>>
>> * tools/virsh.c (cmdBlockPull): fix uninitialized memory usage.
>>
>> * How to reproduce?
>> $ qemu-img create /var/lib/libvirt/images/test 1M
>> $ cat>  /tmp/test.xml<<EOF
>> <domain type='qemu'>
>>    <name>test</name>
>>    <memory>219200</memory>
>>    <vcpu>1</vcpu>
>>    <os>
>>      <type arch='x86_64'>hvm</type>
>>      <boot dev='hd'/>
>>    </os>
>>    <devices>
>>      <disk type='file' device='disk'>
>>        <driver name='qemu' type='raw'/>
>>        <source file='/var/lib/libvirt/images/test'/>
>>        <target dev='vda' bus='virtio'/>
>>      </disk>
>>      <input type='mouse' bus='ps2'/>
>>      <graphics type='spice' autoport='yes' listen='0.0.0.0'/>
>>    </devices>
>> </domain>
>> EOF
>> $ virsh define /tmp/test.xml
>> $ valgrind -v virsh blockpull test /var/lib/libvirt/images/test --wait
>>
>> actual result:
>>
>> ==10906== 1 errors in context 1 of 1:
>> ==10906== Syscall param rt_sigaction(act->sa_flags) points to uninitialised byte(s)
>> ==10906==    at 0x39CF80F5BE: __libc_sigaction (sigaction.c:67)
>> ==10906==    by 0x43016C: cmdBlockPull (virsh.c:7638)
>> ==10906==    by 0x4150D4: vshCommandRun (virsh.c:18574)
>> ==10906==    by 0x425E73: main (virsh.c:20178)
>> ==10906==  Address 0x7fefffae8 is on thread 1's stack
>>
>>
>> Signed-off-by: Alex Jia<ajia at redhat.com>
>> ---
>>   tools/virsh.c |    1 +
>>   1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/tools/virsh.c b/tools/virsh.c
>> index 95ed7bc..4e4ca57 100644
>> --- a/tools/virsh.c
>> +++ b/tools/virsh.c
>> @@ -7634,6 +7634,7 @@ cmdBlockPull(vshControl *ctl, const vshCmd *cmd)
>>
>>           intCaught = 0;
>>           sig_action.sa_sigaction = vshCatchInt;
>> +        sigemptyset((sigset_t *)&sig_action.sa_flags);
> Why using sigemptyset here? You should use 'sig_action.sa_flags = 0'.
Yeah, I think 'sig_action.sa_flags = 0' is right, but I don't know what 
the difference are,
could you explain more?

Thanks,
Alex
> Thanks
> Wen Congyang
>
>>           sigemptyset(&sig_action.sa_mask);
>>           sigaction(SIGINT,&sig_action,&old_sig_action);
>>




More information about the libvir-list mailing list