conf: domain: Restore XPath context after virSecurityDeviceLabelDefParseXML

The function modifies the context but did not care to restore it back.
If a <seclabel> was used on a disk, the <privateData> would not be
parsed.

Use VIR_XPATH_NODE_AUTORESTORE and add a test case to validate that
everything works.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2019-06-24 18:12:48 +02:00
parent c5fa3adf67
commit 4fc8449691
2 changed files with 4 additions and 0 deletions

View File

@ -8872,6 +8872,7 @@ virSecurityDeviceLabelDefParseXML(virSecurityDeviceLabelDefPtr **seclabels_rtn,
xmlXPathContextPtr ctxt,
unsigned int flags)
{
VIR_XPATH_NODE_AUTORESTORE(ctxt);
virSecurityDeviceLabelDefPtr *seclabels = NULL;
size_t nseclabels = 0;
int n;

View File

@ -311,6 +311,9 @@
<backingStore type='file' index='1'>
<format type='qcow2'/>
<source file='/var/lib/libvirt/images/base.qcow2'>
<seclabel model='dac' relabel='yes'>
<label>qemu:qemu</label>
</seclabel>
<reservations managed='yes'>
<source type='unix' path='/somepath/ux.sck' mode='client'/>
</reservations>