• E
    virsh: avoid uninitialized memory usage · 2aed9a97
    Eric Blake 提交于
    Detected by valgrind, via Alex Jia.  Caused by imcomplete
    copy-and-paste from vshWatchJob in commit 3b96a892.
    
    * 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
    2aed9a97
virsh.c 585.6 KB