Hi Jukka, > >> --- a/src/service.c > >> +++ b/src/service.c > >> @@ -3406,10 +3406,10 @@ int __connman_service_disconnect(struct > >> connman_service *service) > >> __connman_ipconfig_clear_address(service->ipconfig_ipv4); > >> __connman_ipconfig_clear_address(service->ipconfig_ipv6); > >> > >> - if (__connman_ipconfig_disable(service->ipconfig_ipv4) < 0) > >> + if (!__connman_ipconfig_disable(service->ipconfig_ipv4)) > >> service->ipconfig_ipv4 = NULL; > >> > >> - if (__connman_ipconfig_disable(service->ipconfig_ipv6) < 0) > >> + if (!__connman_ipconfig_disable(service->ipconfig_ipv6)) > >> service->ipconfig_ipv6 = NULL; > > > > so what is this fixing actually? We do check the return pointer. > > > > The __connman_ipconfig_disable() returns 0 if it could release the > ipconfig struct so we can then mark the service ipconfig pointer also > null. But if <0 is returned, the ipconfig was not cleared by > __connman_ipconfig_disable() and the unpatched version still marks the > ipconfig pointer null and that will cause the memory leak. > After my fix this call to __connman_ipconfig_disable() will look the > same as in other parts of service.c.
I see. Pleae re-send the patch using == 0 instead of ! and then I can go ahead and apply it. Regards Marcel _______________________________________________ connman mailing list connman@connman.net http://lists.connman.net/listinfo/connman