URL: <https://savannah.nongnu.org/support/?109655>
Summary: memory leak in autoip.c Project: Savannah Administration Submitted by: anne1993 Submitted on: Wed 13 Mar 2019 04:05:23 AM UTC Category: Savannah trackers - bugs, tasks, etc. Priority: 5 - Normal Severity: 3 - Normal Status: None Assigned to: None Originator Email: Operating System: GNU/Linux Open/Closed: Open Discussion Lock: Any _______________________________________________________ Details: When I test the autoip, In find there is memory leak in autoip.c: In autopip_start() function, mem_malloc is called to alloc memory: autoip_start(struct netif *netif) { struct autoip* autoip = netif_autoip_data(netif); if (autoip == NULL) { /* no AutoIP client attached yet? */ autoip = (struct autoip *)mem_malloc(sizeof(struct autoip)); …… } But in autoip_stop() function, there is no function to free this memory: err_t autoip_stop(struct netif *netif) { struct autoip* autoip = netif_autoip_data(netif); if (autoip != NULL) { autoip->state = AUTOIP_STATE_OFF; if (ip4_addr_islinklocal(netif_ip4_addr(netif))) { netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4); } } return ERR_OK; } The correct code will be like the following: err_t autoip_stop(struct netif *netif) { struct autoip* autoip = netif_autoip_data(netif); if (autoip != NULL) { autoip->state = AUTOIP_STATE_OFF; if (ip4_addr_islinklocal(netif_ip4_addr(netif))) { netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4); } mem_free(autoip); netif_set_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_AUTOIP, NULL); } return ERR_OK; } _______________________________________________________ Reply to this item at: <https://savannah.nongnu.org/support/?109655> _______________________________________________ Message sent via Savannah https://savannah.nongnu.org/