libvirt/src/util
Michal Privoznik 1d8dde61fd virxml: Avoid double indentation of <metadata/> element
There was a recent change in libxml2 that caused a trouble for
us. To us, <metadata/> in domain or network XMLs are just opaque
value where management application can store whatever data it
finds fit. At XML parser/formatter level, we just make a copy of
the element during parsing and then format it back. For
formatting we use xmlNodeDump() which allows caller to specify
level of indentation. Previously, the indentation was not
applied onto the very first line, but as of v2.9.12-2-g85b1792e
libxml2 is applying indentation also on the first line.

This does not work well with out virBuffer because as soon as we
call virBufferAsprintf() to append <metadata/> element,
virBufferAsprintf() will apply another level of indentation.

Instead of version checking, let's skip any indentation added by
libxml2 before virBufferAsprintf() is called.

Note, the problem is only when telling xmlNodeDump() to use
indentation, i.e. level argument is not zero. Therefore,
virXMLNodeToString() which also calls xmlNodeDump() is safe as it
passes zero.

Tested-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2021-05-25 13:17:22 +02:00
..
glibcompat.c src: ensure GSource background unref happens in correct event loop 2021-03-17 09:16:05 +00:00
glibcompat.h src: ensure GSource background unref happens in correct event loop 2021-03-17 09:16:05 +00:00
iohelper.c util: iohelper: Don't handle OOM from posix_memalign 2021-03-02 09:50:19 +01:00
meson.build meson: tools: depend on keycode generated sources 2021-03-05 20:05:54 +04:00
viralloc.c util: Make virReallocN return void 2021-03-22 12:44:18 +01:00
viralloc.h util: Make virReallocN return void 2021-03-22 12:44:18 +01:00
virarch.c
virarch.h util: add ARCH_IS_MIPS64 helper macro 2020-11-20 12:09:51 +00:00
virarptable.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virarptable.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viraudit.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viraudit.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauth.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauth.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauthconfig.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauthconfig.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbitmap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbitmap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbpf.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virbpf.h lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virbuffer.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbuffer.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircgroup.c Replace AbsPath judgement method with g_path_is_absolute() 2021-04-21 10:02:09 +02:00
vircgroup.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircgroupbackend.c vircgroupbackend: Extend error messages in VIR_CGROUP_BACKEND_CALL() 2021-04-19 11:21:40 +02:00
vircgroupbackend.h vircgroupbackend: Extend error messages in VIR_CGROUP_BACKEND_CALL() 2021-04-19 11:21:40 +02:00
vircgrouppriv.h vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv1.c vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv1.h
vircgroupv2.c vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv2.h
vircgroupv2devices.c vircgroupv2devices: refactor virCgroupV2DevicesRemoveProg 2021-04-14 12:06:16 +02:00
vircgroupv2devices.h vircgroupv2devices: refactor virCgroupV2DevicesRemoveProg 2021-04-14 12:06:16 +02:00
vircommand.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
vircommand.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircommandpriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virconf.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virconf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
vircrypto.c virCryptoEncryptDataAESgnutls: Use virSecureErase instead of memset 2021-02-03 13:07:13 +01:00
vircrypto.h
virdaemon.c lib: Replace virFileMakePath() with g_mkdir_with_parents() 2021-03-04 20:52:23 +01:00
virdaemon.h
virdevmapper.c virDevMapperGetTargetsImpl: Use correct length when copying into dm.name 2021-03-08 12:16:13 +01:00
virdevmapper.h
virdnsmasq.c virdnsmasq: remove binaryPath argument from dnsmasqCapsNewFromBinary 2021-04-21 14:18:31 +02:00
virdnsmasq.h virdnsmasq: remove binaryPath argument from dnsmasqCapsNewFromBinary 2021-04-21 14:18:31 +02:00
virebtables.c util: replace VIR_FREE with g_free in all vir*Free() functions 2021-02-05 00:20:43 -05:00
virebtables.h
virendian.h
virenum.c
virenum.h
virerror.c Fix spelling 2021-04-15 15:42:21 +02:00
virerror.h util: virerror: Remove VIR_ERROR_MAX_LENGTH macro 2021-03-05 15:01:29 +01:00
virerrorpriv.h
virevent.c util: event: check return value of virInitialize 2020-09-23 13:26:34 +02:00
virevent.h
vireventglib.c src: ensure GSource background unref happens in correct event loop 2021-03-17 09:16:05 +00:00
vireventglib.h
vireventglibwatch.c util: keep track of full GSource object not source ID number 2020-08-07 12:43:56 +01:00
vireventglibwatch.h util: keep track of full GSource object not source ID number 2020-08-07 12:43:56 +01:00
vireventthread.c util: do not unref event thread after joining it 2020-09-23 17:06:36 +02:00
vireventthread.h
virfcp.c virBuildPath: Remove return value 2021-03-02 09:50:19 +01:00
virfcp.h
virfdstream.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfdstream.h
virfile.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfile.h tests: introduce virfirewallmock 2021-04-21 14:18:51 +02:00
virfilecache.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfilecache.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfirewall.c virfirewall: use virFindFileInPath instead of virFileIsExecutable 2021-04-21 14:18:39 +02:00
virfirewall.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfirewalld.c util: firewall: use g_new0 2020-10-06 12:31:34 +02:00
virfirewalld.h
virfirewalldpriv.h
virfirewallpriv.h
virfirmware.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virfirmware.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virgdbus.c virgdbus: fix getting non-shared DBus connection 2020-11-09 23:42:33 +01:00
virgdbus.h virgdbus: add DBus reply format check 2020-09-23 12:53:31 +02:00
virgettext.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virgettext.h
virgic.c
virgic.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virglibutil.c util: Add helpers for auto-freeing GSList filled with strings 2021-02-11 17:05:32 +01:00
virglibutil.h util: Add helpers for auto-freeing GSList filled with strings 2021-02-11 17:05:32 +01:00
virhash.c Fix spelling 2021-04-15 15:42:21 +02:00
virhash.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virhashcode.c Prefer https: everywhere where possible 2020-09-01 21:58:46 +02:00
virhashcode.h Prefer https: everywhere where possible 2020-09-01 21:58:46 +02:00
virhook.c virBuildPath: Remove return value 2021-03-02 09:50:19 +01:00
virhook.h
virhostcpu.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virhostcpu.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virhostcpupriv.h
virhostmem.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virhostmem.h
virhostuptime.c virhostuptime: Fix rounding in uptime calculation 2021-02-02 15:00:55 +01:00
virhostuptime.h
viridentity.c viridentity: Fix ref/unref imbalance in VIR_IDENTITY_AUTORESTORE 2021-05-17 21:06:15 +02:00
viridentity.h src: add API to determine if current identity is a system identity 2021-05-13 11:07:40 +01:00
viridentitypriv.h util: generate a persistent system token 2021-05-13 11:07:16 +01:00
virinitctl.c
virinitctl.h
viriptables.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viriptables.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viriscsi.c
viriscsi.h
virjson.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virjson.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virkeycode.c Split declarations from initializations 2020-08-25 19:03:11 +02:00
virkeycode.h
virkmod.c
virkmod.h
virlease.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlease.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlockspace.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlockspace.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlog.c virlog: Remove stray "todo" in comment 2021-04-15 15:42:21 +02:00
virlog.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacaddr.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacaddr.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacmap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmacmap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmdev.c nodedev: refactor virMediatedDeviceGetIOMMUGroupNum() 2021-04-15 08:51:37 -05:00
virmdev.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virmodule.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virmodule.h
virnetdev.c Drop magic comments for coverity 2021-05-24 20:26:20 +02:00
virnetdev.h virnetdev: move virNetDevSetRootQDisc to virnetdevbandwidth 2021-04-21 14:19:34 +02:00
virnetdevbandwidth.c virnetdev: move virNetDevSetRootQDisc to virnetdevbandwidth 2021-04-21 14:19:34 +02:00
virnetdevbandwidth.h virnetdev: move virNetDevSetRootQDisc to virnetdevbandwidth 2021-04-21 14:19:34 +02:00
virnetdevbridge.c virnetdevbridge: Ignore EEXIST when adding an entry to fdb 2021-05-03 11:12:58 +02:00
virnetdevbridge.h
virnetdevip.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevip.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevmacvlan.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevmacvlan.h netdevmacvlan: Use helper function to create unique macvlan/macvtap name 2020-12-15 13:35:33 -05:00
virnetdevmidonet.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevmidonet.h
virnetdevopenvswitch.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevopenvswitch.h virnetdevopenvswitch: Remove redundant declaration 2021-05-20 11:30:01 +02:00
virnetdevtap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevtap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevveth.c util:veth: Create veth device pair by netlink 2020-12-16 14:43:18 -05:00
virnetdevveth.h
virnetdevvlan.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvlan.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvportprofile.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvportprofile.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetlink.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetlink.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodesuspend.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodesuspend.h
virnuma.c conf, docs, schema: Add support for 'restrictive' mode in numatune 2021-04-19 11:39:13 +02:00
virnuma.h virnuma: Export virNumaGetMaxCPUs properly 2021-05-17 15:54:13 +02:00
virnvme.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnvme.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virobject.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virobject.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpci.c Fix spelling 2021-04-15 15:42:21 +02:00
virpci.h conf: Use virTristateXXX in virPCIDeviceAddress 2021-04-16 09:48:42 +02:00
virperf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virperf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpidfile.c lib: Replace virFileMakePath() with g_mkdir_with_parents() 2021-03-04 20:52:23 +01:00
virpidfile.h
virpolkit.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpolkit.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virportallocator.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virportallocator.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virprobe.h
virprocess.c Drop magic comments for coverity 2021-05-24 20:26:20 +02:00
virprocess.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virqemu.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virqemu.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrandom.c util: add virRandomToken API 2021-05-13 11:07:13 +01:00
virrandom.h util: add virRandomToken API 2021-05-13 11:07:13 +01:00
virresctrl.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virresctrl.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virresctrlpriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrotatingfile.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrotatingfile.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsi.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsi.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsihost.c util: quieten virSCSIHostGetUniqueId 2020-11-06 15:03:39 +01:00
virscsihost.h
virscsivhost.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsivhost.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virseclabel.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virseclabel.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecret.c secret: rework handling of private secrets 2021-05-13 11:07:47 +01:00
virsecret.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecureerase.c util: virsecureerase: Introduce virSecureEraseString 2021-02-03 13:07:13 +01:00
virsecureerase.h util: virsecureerase: Introduce virSecureEraseString 2021-02-03 13:07:13 +01:00
virsocket.c util: Fix file descriptor passing on 64-bit FreeBSD and NetBSD. 2021-02-17 10:15:33 +00:00
virsocket.h
virsocketaddr.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsocketaddr.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virstoragefile.c virStorageFileParseBackingStoreStr: use g_strsplit instead of virStringSplitCount 2021-04-12 15:55:09 +02:00
virstoragefile.h Remove virStorageFileCanonicalizePath 2021-04-12 15:55:09 +02:00
virstring.c util: virstring: Remove the virStringSplitCount wrapper funcion 2021-04-12 15:55:10 +02:00
virstring.h util: virstring: Remove the virStringSplitCount wrapper funcion 2021-04-12 15:55:10 +02:00
virsysinfo.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsysinfo.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsysinfopriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemd.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemd.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemdpriv.h
virthread.c virthread: Make sure virOnce() returns -1 on error 2021-05-07 12:33:58 +02:00
virthread.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virthreadjob.c
virthreadjob.h
virthreadpool.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virthreadpool.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virtime.c util: o-z: use g_new0 2020-10-06 12:31:34 +02:00
virtime.h
virtpm.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virtpm.h
virtypedparam-public.c Do not check return value of VIR_RESIZE_N 2021-03-22 12:44:18 +01:00
virtypedparam.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virtypedparam.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viruri.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viruri.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virusb.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virusb.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virutil.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virutil.h virIndexToDiskName: Make 'idx' unsigned and remove check 2021-03-05 15:33:34 +01:00
viruuid.c viruuid: Rework virUUIDIsValid() 2020-12-04 16:24:19 +01:00
viruuid.h viruuid: Rework virUUIDIsValid() 2020-12-04 16:24:19 +01:00
virvhba.c remove unnecessary cleanup labels and unused return variables 2020-11-02 22:01:36 -05:00
virvhba.h
virvsock.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virvsock.h
virxdrdefs.h
virxml.c virxml: Avoid double indentation of <metadata/> element 2021-05-25 13:17:22 +02:00
virxml.h virxml: Introduce and use virXMLFormatMetadata() 2021-05-25 13:17:22 +02:00