[PATCH 3/4] conf: Rework <tpm/> formatting
Peter Krempa
pkrempa at redhat.com
Tue Jan 4 08:49:17 UTC 2022
On Tue, Jan 04, 2022 at 09:14:29 +0100, Michal Privoznik wrote:
> The <tpm/> element formatting is handled in
> virDomainTPMDefFormat() which uses the "old style" - appending
> strings directly into the output buffer. With this, it's easy to
> get conditions that tell when an element has ended wrong. In this
> particular case, if both <encryption/> and <active_pcr_banks/>
> are to be formatted the current code puts a stray '>' into the
> output buffer, resulting in invalid XML.
>
> Rewrite the function to use virXMLFormatElement() which is more
> clever.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=2016599#c15
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/conf/domain_conf.c | 53 ++++++++------------
> tests/qemuxml2argvdata/tpm-emulator-tpm2.xml | 1 -
> 2 files changed, 22 insertions(+), 32 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 716c6d2240..b8fef8586c 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -25481,63 +25481,54 @@ virDomainTPMDefFormat(virBuffer *buf,
> virDomainTPMDef *def,
> unsigned int flags)
> {
> - virBufferAsprintf(buf, "<tpm model='%s'>\n",
> + g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
> + g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
> + g_auto(virBuffer) backendAttrBuf = VIR_BUFFER_INITIALIZER;
> + g_auto(virBuffer) backendBuf = VIR_BUFFER_INIT_CHILD(&childBuf);
Cannonically this would be 'backendChildBuf'.
[...]
Above code:
Reviewed-by: Peter Krempa <pkrempa at redhat.com>
> diff --git a/tests/qemuxml2argvdata/tpm-emulator-tpm2.xml b/tests/qemuxml2argvdata/tpm-emulator-tpm2.xml
> index 59dd68311f..79acde218b 100644
> --- a/tests/qemuxml2argvdata/tpm-emulator-tpm2.xml
> +++ b/tests/qemuxml2argvdata/tpm-emulator-tpm2.xml
> @@ -30,7 +30,6 @@
> <tpm model='tpm-tis'>
> <backend type='emulator' version='2.0'>
> <encryption secret='b4a117f1-8af2-44a4-91b8-7f0d2d4d68a3'/>
> - >
> <active_pcr_banks>
> <sha256/>
> <sha512/>
> --
> 2.34.1
>
More information about the libvir-list
mailing list