[libvirt] [PATCH] virsh: Fix debugging

Michal Privoznik mprivozn at redhat.com
Wed Aug 28 09:18:43 UTC 2013


On 28.08.2013 08:22, Ján Tomko wrote:
> On 08/28/2013 03:39 AM, Eric Blake wrote:
>> On 08/27/2013 06:27 AM, Martin Kletzander wrote:
>>> diff --git a/tools/virsh.c b/tools/virsh.c
>>> index ac77156..34f5c4a 100644
>>> --- a/tools/virsh.c
>>> +++ b/tools/virsh.c
>>> @@ -2321,10 +2321,9 @@ vshInitDebug(vshControl *ctl)
>>>          debugEnv = getenv("VIRSH_LOG_FILE");
>>>          if (debugEnv && *debugEnv) {
>>>              ctl->logfile = vshStrdup(ctl, debugEnv);
>>> +            vshOpenLogFile(ctl);
>>>          }
>>>      }
>>> -
>>> -    vshOpenLogFile(ctl);
>>>  }
>>>
>>>  /*
>>> @@ -3044,7 +3043,9 @@ vshParseArgv(vshControl *ctl, int argc, char **argv)
>>>              ctl->readonly = true;
>>>              break;
>>>          case 'l':
>>> +            vshCloseLogFile(ctl);
>>>              ctl->logfile = vshStrdup(ctl, optarg);
>>> +            vshOpenLogFile(ctl);
>>
>> Note that there's another leak here (pre-existing): If I call:
>>  virsh -l file1 -l file2, we leak "file1" by reassigning a malloc'd
>> string without first freeing the old version.
>>
> 
> Actually, it gets freed in vshCloseLogFile (and set to NULL, just to be double
> sure):
> 
>     if (ctl->logfile) {
>         VIR_FREE(ctl->logfile);
>         ctl->logfile = NULL;

BTW this makes no sense, since VIR_FREE() sets every passed pointer to
NULL. so this assignment is just statement without any effect.

Michal




More information about the libvir-list mailing list