[libvirt] [PATCH v2 1/4] parallels: Resolve issues with uninitialized 'ret' value

Guannan Ren gren at redhat.com
Mon Jan 14 16:18:12 UTC 2013


On 01/09/2013 01:34 AM, John Ferlan wrote:
> Added some messaging to indicate possible failure from virXPathULongLong()
> as well
> ---
>   src/parallels/parallels_storage.c | 17 ++++++++++++-----
>   1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/src/parallels/parallels_storage.c b/src/parallels/parallels_storage.c
> index 2908bee..34911a4 100644
> --- a/src/parallels/parallels_storage.c
> +++ b/src/parallels/parallels_storage.c
> @@ -258,7 +258,7 @@ static int parallelsDiskDescParseNode(xmlDocPtr xml,
>                                         virStorageVolDefPtr def)
>   {
>       xmlXPathContextPtr ctxt = NULL;
> -    int ret;
> +    int ret = -1;
>   
>       if (STRNEQ((const char *)root->name, "Parallels_disk_image")) {
>           virReportError(VIR_ERR_XML_ERROR,
> @@ -275,11 +275,16 @@ static int parallelsDiskDescParseNode(xmlDocPtr xml,
>       ctxt->node = root;
>   
>       if (virXPathULongLong("string(./Disk_Parameters/Disk_size)",
> -                          ctxt, &def->capacity))
> -        ret = -1;
> +                          ctxt, &def->capacity) < 0) {
> +        virReportError(VIR_ERR_XML_ERROR,
> +                       "%s", _("failed to get disk size from "
> +                               "the disk descriptor xml"));
> +        goto cleanup;
> +    }
>   
>       def->capacity <<= 9;
>       def->allocation = def->capacity;
> +    ret = 0;
>   cleanup:
>       xmlXPathFreeContext(ctxt);
>       return ret;
> @@ -315,7 +320,8 @@ static int parallelsAddDiskVolume(virStoragePoolObjPtr pool,
>   
>       def->type = VIR_STORAGE_VOL_FILE;
>   
> -    parallelsDiskDescParse(diskDescPath, def);
> +    if (parallelsDiskDescParse(diskDescPath, def) < 0)
> +        goto error;
>   
>       if (!(def->target.path = realpath(diskPath, NULL)))
>           goto no_memory;
> @@ -330,8 +336,9 @@ static int parallelsAddDiskVolume(virStoragePoolObjPtr pool,
>   
>       return 0;
>   no_memory:
> -    virStorageVolDefFree(def);
>       virReportOOMError();
> +error:
> +    virStorageVolDefFree(def);
>       return -1;
>   }
>   

    ACK.




More information about the libvir-list mailing list