[libvirt] [PATCH] admin_server: fix memory leak
Michal Privoznik
mprivozn at redhat.com
Fri Mar 25 08:49:55 UTC 2016
On 24.03.2016 14:02, Pavel Hrdina wrote:
> On Thu, Mar 24, 2016 at 01:34:04PM +0100, Erik Skultety wrote:
>> On 24/03/16 10:52, Pavel Hrdina wrote:
>>> If caller of adminConnectListServers() pass NULL instead of servers we
>>> need to free the list we've received from virNetDaemonGetServers().
>>>
>>
>> Good catch.
>>
>>> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
>>> ---
>>> daemon/admin_server.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/daemon/admin_server.c b/daemon/admin_server.c
>>> index 1d16bc9..2f26488 100644
>>> --- a/daemon/admin_server.c
>>> +++ b/daemon/admin_server.c
>>> @@ -52,6 +52,8 @@ adminConnectListServers(virNetDaemonPtr dmn,
>>> if (servers) {
>>> *servers = srvs;
>>> srvs = NULL;
>>> + } else {
>>> + virObjectListFreeCount(srvs, ret);
>>> }
>>
>> No need to do it here ^^ actually, you can safely 'free' it in cleanup.
>> "srvs = NULL" guarantees that even if list was requested and non-null,
>> calling free in cleanup section will finish without any harm.
>
> It was my intention to make it clear that only in this case we would free the
> srvs, I know, that it's safe to pass NULL to that function.
>
>>
>>> cleanup:
>>> return ret;
>>>
>>
>> ACK with that adjustment.
>
> Ok, I'll move it to cleanup :) thanks.
Oh, you forgot to guard it with check for ret > 0. Otherwise a terrible
thing will happen.
Michal
More information about the libvir-list
mailing list