Skip to content

Commit

Permalink
Fixed gethostname memory leak.
Browse files Browse the repository at this point in the history
  • Loading branch information
LynnL4 committed Dec 28, 2020
1 parent 9139dbf commit 71c932f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 40 deletions.
42 changes: 19 additions & 23 deletions src/wifi/wifi_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -1264,35 +1264,18 @@ extern void wifi_dns_found(const char *name, ip_addr_t *ipaddr, void *callback_a

int8_t rpc_dns_gethostbyname_addrtype(const char *hostname, binary_t *addr, uint32_t found, const binary_t *callback_arg, uint8_t dns_addrtype)
{
log_d(" called\n\r");
log_d(" called\n\r");
ip_addr_t *addr_info = (ip_addr_t *)erpc_malloc(sizeof(ip_addr_t));
addr->data = (uint8_t *)addr_info;
addr->dataLength = sizeof(ip_addr_t);

int ret = 0;
if (found != 0)
{
ret = dns_gethostbyname_addrtype(hostname, addr_info, wifi_dns_found, callback_arg, dns_addrtype);
if (addr)
{
erpc_free(addr);
}
}
else

ret = dns_gethostbyname_addrtype(hostname, addr_info, wifi_dns_found, callback_arg, dns_addrtype);

if (ret == ERR_OK && found != 0)
{
ret = dns_gethostbyname_addrtype(hostname, addr_info, NULL, callback_arg, dns_addrtype);
if (hostname)
{
erpc_free(hostname);
}
if (addr)
{
free_binary_t_struct(addr);
}
if (addr)
{
erpc_free(addr);
}
wifi_dns_found(hostname, addr_info, callback_arg);
if (callback_arg)
{
free_binary_t_struct(callback_arg);
Expand All @@ -1303,6 +1286,19 @@ int8_t rpc_dns_gethostbyname_addrtype(const char *hostname, binary_t *addr, uint
}
}

if (hostname)
{
erpc_free(hostname);
}
if (addr)
{
free_binary_t_struct(addr);
}
if (addr)
{
erpc_free(addr);
}

log_d("exit");
return ret;
}
Expand Down
17 changes: 0 additions & 17 deletions src/wifi/wifi_callback.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,23 +347,6 @@ void wifi_dns_found(const char *name, ip_addr_t *ipaddr, void *callback_arg)

rpc_wifi_dns_found(name, &b_ipaddr, b_callback_arg);

if (name)
{
erpc_free(name);
}
if (ipaddr)
{
erpc_free(ipaddr);
}
if (callback_arg)
{
free_binary_t_struct(callback_arg);
}
if (callback_arg)
{
erpc_free(callback_arg);
}

if (callback_arg)
{
free_binary_t_struct(callback_arg);
Expand Down

0 comments on commit 71c932f

Please sign in to comment.