summaryrefslogtreecommitdiff
path: root/lib/debug.c
diff options
context:
space:
mode:
authorStephen Worley <sworley@cumulusnetworks.com>2020-01-06 12:58:41 -0500
committerStephen Worley <sworley@cumulusnetworks.com>2020-01-30 17:15:05 -0500
commit5bf15faa19288144c214ca48ef26e01512037ef6 (patch)
tree025bb6ea069b5fcac43781888fe2466cd14dbc15 /lib/debug.c
parent64d50ba4c4dd6d9e6976b7528cbf9abbbaa9056e (diff)
zebra: don't created connected if duplicate depend
Since we are using a UNIQUE RB tree, we need to handle the case of adding in a duplicate entry into it. The list API code returns NULL when a successfull add occurs, so lets pull that handling further up into the connected handlers. Then, free the allocated connected struct if it is a duplicate. This is a pretty unlikely situation to happen. Also, pull up the RB handling of _del RB API as well. This was found with the zapi fuzzing code. ``` ==1052840== ==1052840== 200 bytes in 5 blocks are definitely lost in loss record 545 of 663 ==1052840== at 0x483BB1A: calloc (vg_replace_malloc.c:762) ==1052840== by 0x48E1008: qcalloc (memory.c:110) ==1052840== by 0x44D357: nhg_connected_new (zebra_nhg.c:73) ==1052840== by 0x44D300: nhg_connected_tree_add_nhe (zebra_nhg.c:123) ==1052840== by 0x44FBDC: depends_add (zebra_nhg.c:1077) ==1052840== by 0x44FD62: depends_find_add (zebra_nhg.c:1090) ==1052840== by 0x44E46D: zebra_nhg_find (zebra_nhg.c:567) ==1052840== by 0x44E1FE: zebra_nhg_rib_find (zebra_nhg.c:1126) ==1052840== by 0x45AD3D: rib_add_multipath (zebra_rib.c:2616) ==1052840== by 0x4977DC: zread_route_add (zapi_msg.c:1596) ==1052840== by 0x49ABB9: zserv_handle_commands (zapi_msg.c:2636) ==1052840== by 0x428B11: main (main.c:309) ``` Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
Diffstat (limited to 'lib/debug.c')
0 files changed, 0 insertions, 0 deletions