[libvirt] [PATCH 5/8] virVMXParseConfig: Don't leak def->videos
Michal Privoznik
mprivozn at redhat.com
Fri Aug 4 14:31:06 UTC 2017
On 08/04/2017 04:22 PM, Michal Privoznik wrote:
> This function calls virDomainDefAddImplicitDevices() which adds
> implicit video device to domain definition. However, later in the
> process the function just ignores this and overwrites the @videos
> array without prior free.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/vmx/vmx.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
> index 96507f10f..858bc090d 100644
> --- a/src/vmx/vmx.c
> +++ b/src/vmx/vmx.c
> @@ -1305,6 +1305,7 @@ virVMXParseConfig(virVMXContext *ctx,
> long long sharedFolder_maxNum = 0;
> int cpumasklen;
> char *namespaceData;
> + size_t i;
>
> if (ctx->parseFileName == NULL) {
> virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> @@ -1761,11 +1762,13 @@ virVMXParseConfig(virVMXContext *ctx,
> /* FIXME */
>
> /* def:videos */
> - if (VIR_ALLOC_N(def->videos, 1) < 0)
> - goto cleanup;
> -
> + for (i = 0; i < def->nvideos; i++)
> + virDomainVideoDefFree(def->videos[i]);
> def->nvideos = 0;
>
> + if (VIR_REALLOC_N(def->videos, 1) < 0)
> + goto cleanup;
> +
> if (virVMXParseSVGA(conf, &def->videos[def->nvideos]) < 0)
> goto cleanup;
>
>
Oh, forgot to push this into the commit:
diff --git i/src/vmx/vmx.c w/src/vmx/vmx.c
index 858bc090d..d111b1ef1 100644
--- i/src/vmx/vmx.c
+++ w/src/vmx/vmx.c
@@ -3035,7 +3035,7 @@ virVMXParseSVGA(virConfPtr conf, virDomainVideoDefPtr *def)
int result = -1;
long long svga_vramSize = 0;
- if (def == NULL || *def != NULL) {
+ if (def == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument"));
return -1;
}
Consider it squashed in locally.
Michal
More information about the libvir-list
mailing list