From 615d4265871653605bb53becc09bd77b48716dbb Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Wed, 16 Dec 2015 19:38:23 +0100 Subject: [PATCH] lib: fix vrf_bitmap leak in zclient_free() zclient_stop(), which is used as antagonist to zclient_init(), needs to undo the vrf_bitmap allocation. Otherwise zclient_init() will leak the allocated memory, for example when zclient_reset() is used. Reported-by: Lou Berger Signed-off-by: David Lamparter --- lib/zclient.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/zclient.c b/lib/zclient.c index a02cbbe4dd..24d9b589df 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -140,6 +140,9 @@ redist_del_instance (struct redist_proto *red, u_short instance) void zclient_stop (struct zclient *zclient) { + afi_t afi; + int i; + if (zclient_debug) zlog_debug ("zclient stopped"); @@ -162,6 +165,15 @@ zclient_stop (struct zclient *zclient) zclient->sock = -1; } zclient->fail = 0; + + for (afi = AFI_IP; afi < AFI_MAX; afi++) + for (i = 0; i < ZEBRA_ROUTE_MAX; i++) + { + vrf_bitmap_free(zclient->redist[afi][i]); + zclient->redist[afi][i] = VRF_BITMAP_NULL; + } + vrf_bitmap_free(zclient->default_information); + zclient->default_information = VRF_BITMAP_NULL; } void -- 2.39.5