[libvirt] [PATCH] initialize pointer to NULL

Laine Stump laine at laine.org
Sun Jul 3 02:27:38 UTC 2011


On 07/02/2011 08:55 AM, Wen Congyang wrote:
> > From 577ac7e8594cbcccb59653786e80c3916a3238cb Mon Sep 17 00:00:00 2001
> From: Wen Congyang<wency at cn.fujitsu.com>
> Date: Sat, 2 Jul 2011 06:41:18 +0800
> Subject: [PATCH] initialize pointer to NULL
>
> def and cmd is not initialized to NULL, but we try to freed it if we
> meet some
> error. It's very dangerous.

Well, really it's not necessary to initialize def to NULL, because 
VIR_ALLOC(def) is always called before any point in the code that might 
goto the error label. So by the time you could get any error, def is 
already either a valid pointer, or NULL.

cmd definitely *does* need to be initialized to NULL, though, because it 
doesn't get VIR_ALLOCed until after the check for failure of 
VIR_ALLOC(def) (and resulting goto no_memory).

ACK on initializing cmd. Whether or not to initialize def is a matter of 
style. I prefer not, but others may prefer to do it just in case code is 
added in the future that causes a jump that bypasses VIR_ALLOC(def).


> ---
>   src/qemu/qemu_command.c |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 90a6653..6c78161 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -5818,7 +5818,7 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr caps,
>                                        const char **progenv,
>                                        const char **progargv)
>   {
> -    virDomainDefPtr def;
> +    virDomainDefPtr def = NULL;
>       int i;
>       int nographics = 0;
>       int fullscreen = 0;
> @@ -5827,7 +5827,7 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr caps,
>       const char **nics = NULL;
>       int video = VIR_DOMAIN_VIDEO_TYPE_CIRRUS;
>       int nvirtiodisk = 0;
> -    qemuDomainCmdlineDefPtr cmd;
> +    qemuDomainCmdlineDefPtr cmd = NULL;
>
>       if (!progargv[0]) {
>           qemuReportError(VIR_ERR_INTERNAL_ERROR,




More information about the libvir-list mailing list