]> git.proxmox.com Git - mirror_frr.git/commitdiff
From: Gilad Arnold <gilad arnold at terayon com>
authorpaul <paul>
Wed, 14 May 2003 18:29:13 +0000 (18:29 +0000)
committerpaul <paul>
Wed, 14 May 2003 18:29:13 +0000 (18:29 +0000)
Subject: [zebra 19080] suspected memory leakage upon static route deletion

upon deletion of a static route entry, at the end of
zebra/zebra_rib.c/static_delete_ipv4(), there's a call to XFREE to
deallocate the 'struct static_ipv4'. However, in the case of a static with
ifname as nexthop (type==STATIC_IPV4_IFNAME), this struct holds a pointer to
a dynamically allocated ifname string buffer (si->gate.ifname, see its
allocation within static_add_ipv4() using XSTRDUP). IMO, the attached patch
is required.

Notes: the same applies to IPv6 statics as well (fix included in patch);
and, I admit I haven't yet tested that, but it seems simple enough to be
working... ;->

zebra/zebra_rib.c

index 0f7ccebc52cf99cfd2a71babc00dda2307729f3a..f3b9fd65095f9d3f428a9943ab73237c02a10090 100644 (file)
@@ -1554,6 +1554,8 @@ static_delete_ipv4 (struct prefix *p, struct in_addr *gate, char *ifname,
     si->next->prev = si->prev;
   
   /* Free static route configuration. */
+  if (ifname)
+    XFREE (0, si->gate.ifname);
   XFREE (MTYPE_STATIC_IPV4, si);
 
   return 1;
@@ -2078,6 +2080,8 @@ static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
     si->next->prev = si->prev;
   
   /* Free static route configuration. */
+  if (ifname)
+    XFREE (0, si->ifname);
   XFREE (MTYPE_STATIC_IPV6, si);
 
   return 1;