[PATCH 0/7] Misc g_auto() rewrites

Michal Prívozník mprivozn at redhat.com
Tue Nov 9 15:24:30 UTC 2021


On 11/9/21 3:16 PM, Tim Wiederhake wrote:
> On Mon, 2021-11-01 at 15:16 +0100, Michal Privoznik wrote:
>> I've been looking at our tests lately and noticed an opportunity to
>> rewrite pieces of code to g_auto() magic.
>>
>> Michal Prívozník (7):
>>   qemuagenttest: Don't leak virTypedParameter on failure
>>   Prefer g_auto(GStrv) over g_strfreev()
>>   qemu: Use g_autoptr(qemuMonitorCPUModelInfo)
>>   qemuConnectStealCPUModelFromInfo: Drop needless 'cleanup' label
>>   tests: Use g_autoptr(qemuMonitorTest)
>>   test: Use g_autofree more
>>   tests: Drop cleanup/error labels
>>
>>  src/bhyve/bhyve_command.c           |   3 +-
>>  src/bhyve/bhyve_parse_command.c     |  22 +--
>>  src/libxl/libxl_conf.c              |   9 +-
>>  src/libxl/xen_common.c              |  18 +-
>>  src/libxl/xen_xl.c                  |  17 +-
>>  src/lxc/lxc_container.c             |   4 +-
>>  src/lxc/lxc_native.c                |  24 +--
>>  src/qemu/qemu_driver.c              |  17 +-
>>  src/remote/remote_daemon_dispatch.c |   3 +-
>>  src/remote/remote_driver.c          |   4 +-
>>  src/storage/storage_backend_rbd.c   |   3 +-
>>  src/util/vircgroup.c                |   3 +-
>>  src/util/vircgroupv2.c              |   4 +-
>>  src/util/virfirmware.c              |   6 +-
>>  src/util/viruri.c                   |   3 +-
>>  src/vbox/vbox_common.c              |  12 +-
>>  src/vbox/vbox_snapshot_conf.c       |  40 ++--
>>  src/vbox/vbox_tmpl.c                |   3 +-
>>  src/vz/vz_sdk.c                     |   3 +-
>>  tests/qemuagenttest.c               | 286 ++++++++++++----------------
>>  tests/qemucapabilitiestest.c        |  22 +--
>>  tests/qemuhotplugtest.c             |   3 +-
>>  tests/qemumigparamstest.c           |  40 ++--
>>  tests/qemumonitorjsontest.c         |  95 ++++-----
>>  tests/qemumonitortestutils.c        |  63 +++---
>>  tests/vboxsnapshotxmltest.c         |   3 +-
>>  tests/virconftest.c                 |   3 +-
>>  tests/virfiletest.c                 |   3 +-
>>  tests/virstringtest.c               |   3 +-
>>  tools/virsh-host.c                  |  13 +-
>>  tools/virt-login-shell-helper.c     |   7 +-
>>  tools/vsh.c                         |   4 +-
>>  32 files changed, 279 insertions(+), 464 deletions(-)
>>
> 
> When applying this series, compiling with ASAN enabled, and running
> "virsh hypervisor-cpu-compare empty.xml" with "empty.xml" == "<cpu/>",
> I see the following error message:
> 
> =================================================================
> ==45506==ERROR: AddressSanitizer: heap-use-after-free on address
> 0x602000009b70 at pc 0x5588d1c81aa8 bp 0x7fffc8510af0 sp 0x7fffc8510ae8
> READ of size 8 at 0x602000009b70 thread T0
>     #0 0x5588d1c81aa7 in cmdHypervisorCPUCompare
> ../../git/libvirt/tools/virsh-host.c:1605
>     #1 0x5588d1cead5d in vshCommandRun
> ../../git/libvirt/tools/vsh.c:1309
>     #2 0x5588d1bd5331 in main ../../git/libvirt/tools/virsh.c:899
>     #3 0x7fc8c4f32b74 in __libc_start_main (/lib64/libc.so.6+0x27b74)
>     #4 0x5588d1bcef3d in _start
> (/home/twiederh/build/libvirt/tools/virsh+0x16bf3d)


Ah thanks, it's a problem in 2/7 where this needs to be squashed in:

diff --git i/tools/virsh-host.c w/tools/virsh-host.c
index f6aa532b40..fc84415e7b 100644
--- i/tools/virsh-host.c
+++ w/tools/virsh-host.c
@@ -1123,7 +1123,7 @@ vshExtractCPUDefXMLs(vshControl *ctl,
     }

  cleanup:
-    return cpus;
+    return g_steal_pointer(&cpus);

  error:
     goto cleanup;


Michal




More information about the libvir-list mailing list