Bug: New I3 routers don't get added to the linked list, resulting in a memory leak.
Danger: High - Memory leak
Found by: Samson
Fixed by: Samson
---
i3.c, i3_router
Locate:
I3CREATE( router, ROUTER_DATA, 1 );
I3LINK( router, first_router, last_router, next, prev );
router->name = I3STRALLOC( rtname );
router->ip = I3STRALLOC( rtip );
router->port = rtport;
router->reconattempts = 0;
Below it, add:
I3LINK( router, first_router, last_router, next, prev );
Using the i3router command to add new routers goes through the motions of allocating the memory space for the new router and setting the parameters you entered, but it is never linked to the list, resulting in a memory leak. The new router also is not saved into your configuration list because of this.
This bug affects all versions of the client prior to 2.40b and any codebases which may have included it will need to have this corrected.