[libvirt] [PATCH] virsh: Fix debugging

Ján Tomko jtomko at redhat.com
Wed Aug 28 06:22:23 UTC 2013


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;
    }

Jan




More information about the libvir-list mailing list