[libvirt PATCH 2/9] ch: use g_auto in virCHMonitorBuildKernelRelatedJson

Laine Stump laine at redhat.com
Thu Sep 23 00:53:58 UTC 2021


On 9/22/21 4:55 PM, Ján Tomko wrote:
> Signed-off-by: Ján Tomko <jtomko at redhat.com>
> ---
>   src/ch/ch_monitor.c | 27 ++++++++++-----------------
>   1 file changed, 10 insertions(+), 17 deletions(-)
> 
> diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c
> index 876a553f74..d241d30b10 100644
> --- a/src/ch/ch_monitor.c
> +++ b/src/ch/ch_monitor.c
> @@ -112,45 +112,38 @@ virCHMonitorBuildPTYJson(virJSONValue *content, virDomainDef *vmdef)
>   static int
>   virCHMonitorBuildKernelRelatedJson(virJSONValue *content, virDomainDef *vmdef)
>   {
> -    virJSONValue *kernel = virJSONValueNewObject();
> -    virJSONValue *cmdline = virJSONValueNewObject();
> -    virJSONValue *initramfs = virJSONValueNewObject();
> +    g_autoptr(virJSONValue) kernel = virJSONValueNewObject();
> +    g_autoptr(virJSONValue) cmdline = virJSONValueNewObject();
> +    g_autoptr(virJSONValue) initramfs = virJSONValueNewObject();
>   
>       if (vmdef->os.kernel == NULL) {
>           virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                          _("Kernel image path in this domain is not defined"));
> -        goto cleanup;
> +        return -1;
>       } else {
>           kernel = virJSONValueNewObject();

pre-existing, but this ^^^^ is leaking a virJSONValue, isn't it?

>           if (virJSONValueObjectAppendString(kernel, "path", vmdef->os.kernel) < 0)
> -            goto cleanup;
> +            return -1;
>           if (virJSONValueObjectAppend(content, "kernel", &kernel) < 0)
> -            goto cleanup;
> +            return -1;
>       }
>   
>       if (vmdef->os.cmdline) {
>           if (virJSONValueObjectAppendString(cmdline, "args", vmdef->os.cmdline) < 0)
> -            goto cleanup;
> +            return -1;
>           if (virJSONValueObjectAppend(content, "cmdline", &cmdline) < 0)
> -            goto cleanup;
> +            return -1;
>       }
>   
>       if (vmdef->os.initrd != NULL) {
>           initramfs = virJSONValueNewObject();

same here ^^^^

>           if (virJSONValueObjectAppendString(initramfs, "path", vmdef->os.initrd) < 0)
> -            goto cleanup;
> +            return -1;
>           if (virJSONValueObjectAppend(content, "initramfs", &initramfs) < 0)
> -            goto cleanup;
> +            return -1;
>       }
>   
>       return 0;

Being unfamiliar with virJSONValueObjectAppend(), I looked to make sure 
it steals the object is appending, and it does.

> -
> - cleanup:
> -    virJSONValueFree(kernel);
> -    virJSONValueFree(cmdline);
> -    virJSONValueFree(initramfs);
> -
> -    return -1;
>   }
>   
>   static int
> 




More information about the libvir-list mailing list