[ovs-dev] [PATCH ovn] northd: Fix leaks of strings while formatting ecmp flows.

Ilya Maximets i.maximets at ovn.org
Thu Nov 19 19:40:06 UTC 2020


Result of 'normalize_v46_prefix()' should be freed and all dynamic
strings should be destroyed.

  Direct leak of 156 byte(s) in 13 object(s) allocated from:
    #0 0x53700f in malloc (northd/ovn-northd+0x53700f)
    #1 0x71b146 in xmalloc ovs/lib/util.c:138:15
    #2 0x71b39a in xvasprintf ovs/lib/util.c:202:9
    #3 0x71b753 in xasprintf ovs/lib/util.c:343:9
    #4 0x59bddc in add_ecmp_symmetric_reply_flows northd/ovn-northd.c:7985:18
    #5 0x59aab5 in build_ecmp_route_flow northd/ovn-northd.c:8102:13
    #6 0x592260 in build_static_route_flows_for_lrouter ovn-northd.c:10243:13
    #7 0x589267 in build_lswitch_and_lrouter_iterate_by_od ovn-northd.c:11241:5
    #8 0x5888ca in build_lswitch_and_lrouter_flows northd/ovn-northd.c:11313:9
    #9 0x5730a0 in build_lflows northd/ovn-northd.c:11401:5
    #10 0x56f992 in ovnnb_db_run northd/ovn-northd.c:12339:5
    #11 0x56e8a7 in ovn_db_run northd/ovn-northd.c:12932:5
    #12 0x56d6af in main northd/ovn-northd.c:13338:17
    #13 0x7f5371d041a2 in __libc_start_main (/lib64/libc.so.6+0x271a2)

Fixes: 4fdca656857d ("Add ECMP symmetric replies.")
Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
---
 northd/ovn-northd.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
index 148d2a051..1d41aacc6 100644
--- a/northd/ovn-northd.c
+++ b/northd/ovn-northd.c
@@ -7971,6 +7971,7 @@ add_ecmp_symmetric_reply_flows(struct hmap *lflows,
                   IN6_IS_ADDR_V4MAPPED(&route->prefix) ? "4" : "6",
                   route->is_src_route ? "dst" : "src",
                   cidr);
+    free(cidr);
     ovn_lflow_add_with_hint(lflows, od, S_ROUTER_IN_DEFRAG, 100,
                             ds_cstr(&match), "ct_next;",
                             &st_route->header_);
@@ -8022,6 +8023,10 @@ add_ecmp_symmetric_reply_flows(struct hmap *lflows,
     ovn_lflow_add_with_hint(lflows, od, S_ROUTER_IN_ARP_RESOLVE,
                             200, ds_cstr(&ecmp_reply),
                             action, &st_route->header_);
+
+    ds_destroy(&match);
+    ds_destroy(&actions);
+    ds_destroy(&ecmp_reply);
 }
 
 static void
-- 
2.25.4



More information about the dev mailing list