mirror_frr/zebra
Philippe Guibert 2b22d1875b zebra: fix heap-use-after free on ns shutdown
The following ASAN issue has been observed:

> ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000acba4 at pc 0x55910c5694d0 bp 0x7ffe3a8ac850 sp 0x7ffe3a8ac840
> READ of size 4 at 0x6160000acba4 thread T0
>         #0 0x55910c5694cf in ctx_info_from_zns zebra/zebra_dplane.c:3315
>     #1 0x55910c569696 in dplane_ctx_ns_init zebra/zebra_dplane.c:3331
>     #2 0x55910c56bf61 in dplane_ctx_nexthop_init zebra/zebra_dplane.c:3680
>     #3 0x55910c5711ca in dplane_nexthop_update_internal zebra/zebra_dplane.c:4490
>     #4 0x55910c571c5c in dplane_nexthop_delete zebra/zebra_dplane.c:4717
>     #5 0x55910c61e90e in zebra_nhg_uninstall_kernel zebra/zebra_nhg.c:3413
>     #6 0x55910c615d8a in zebra_nhg_decrement_ref zebra/zebra_nhg.c:1919
>     #7 0x55910c6404db in route_entry_update_nhe zebra/zebra_rib.c:454
>     #8 0x55910c64c904 in rib_re_nhg_free zebra/zebra_rib.c:2822
>     #9 0x55910c655be2 in rib_unlink zebra/zebra_rib.c:4212
>     #10 0x55910c6430f9 in zebra_rtable_node_cleanup zebra/zebra_rib.c:968
>     #11 0x7f26f275b8a9 in route_node_free lib/table.c:75
>     #12 0x7f26f275bae4 in route_table_free lib/table.c:111
>     #13 0x7f26f275b749 in route_table_finish lib/table.c:46
>     #14 0x55910c65db17 in zebra_router_free_table zebra/zebra_router.c:191
>     #15 0x55910c65dfb5 in zebra_router_terminate zebra/zebra_router.c:244
>     #16 0x55910c4f40db in zebra_finalize zebra/main.c:249
>     #17 0x7f26f2777108 in event_call lib/event.c:2011
>     #18 0x7f26f264180e in frr_run lib/libfrr.c:1212
>     #19 0x55910c4f49cb in main zebra/main.c:531
>     #20 0x7f26f2029d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>     #21 0x7f26f2029e3f in __libc_start_main_impl ../csu/libc-start.c:392
>     #22 0x55910c4b0114 in _start (/usr/lib/frr/zebra+0x1ae114)

It happens with FRR using the kernel. During shutdown, the
namespace identifier is attempted to be obtained by zebra, in an
attempt to prepare zebra dataplane nexthop messages.

Fix this by accessing the ns structure.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
(cherry picked from commit 7ae70eb5ef)
2024-10-16 13:16:15 +00:00
..
dpdk zebra: Drop new lines from zlog_debug for dpdk debug messages 2023-09-29 09:02:58 +03:00
.gitignore
connected.c zebra: Add connected with noprefixroute 2023-12-06 09:27:52 -05:00
connected.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
debug_nl.c zebra: debug ifname in netlink link debugs 2023-10-20 11:20:25 -04:00
debug.c zebra: add zebra to mgmtd oper-state 2023-12-28 17:53:40 +00:00
debug.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
dplane_fpm_nl.c zebra: Fix crash during reconnect 2024-10-04 11:42:06 +00:00
ge_netlink.c zebra: Fetch actual SRv6 encap src addr on startup 2023-12-14 14:58:35 +01:00
ge_netlink.h zebra: Fetch actual SRv6 encap src addr on startup 2023-12-14 14:58:35 +01:00
if_ioctl.c *: Remove sys/ioctl.h from zebra.h 2024-01-04 14:42:17 -05:00
if_netlink.c zebra: fix speed set to UINT32_MAX 2024-01-29 14:52:32 +01:00
if_netlink.h zebra: Move protodown_r_bit to a better spot 2023-07-05 11:49:36 -04:00
if_socket.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
if_sysctl.c lib: remove net/route.h it is not used 2024-01-09 12:50:40 -05:00
interface.c zebra: Fix to avoid two Vrfs with same table ids 2024-07-14 00:14:24 +00:00
interface.h zebra: fix speed set to UINT32_MAX 2024-01-29 14:52:32 +01:00
ioctl.c *: Remove sys/ioctl.h from zebra.h 2024-01-04 14:42:17 -05:00
ioctl.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ipforward_proc.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ipforward_sysctl.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
ipforward.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
irdp_interface.c zebra: convert interface configuration output to NB 2024-01-28 23:28:40 +02:00
irdp_main.c *: convert struct interface->connected to DLIST 2023-11-22 23:00:30 +01:00
irdp_packet.c *: Convert event.h to frrevent.h 2023-03-24 08:32:17 -04:00
irdp.h *: Rename struct thread to struct event 2023-03-24 08:32:17 -04:00
kernel_netlink.c *: zebra.h should not have fcntl.h 2024-01-09 12:50:40 -05:00
kernel_netlink.h zebra: Add Generic Netlink socket 2023-12-14 14:56:44 +01:00
kernel_socket.c lib: remove net/route.h it is not used 2024-01-09 12:50:40 -05:00
kernel_socket.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
label_manager.c zebra: Cleanup linked list on shutdown in label manager 2023-12-11 15:26:20 -05:00
label_manager.h zebra: Cleanup linked list on shutdown in label manager 2023-12-11 15:26:20 -05:00
main.c zebra: fix heap-use-after free on ns shutdown 2024-10-16 13:16:15 +00:00
Makefile
netconf_netlink.c *: zebra.h should not have fcntl.h 2024-01-09 12:50:40 -05:00
netconf_netlink.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
redistribute.c zebra: SA incorrectly believes a NULL pointer 2024-01-09 13:03:43 -05:00
redistribute.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
rib.h zebra: Reorg struct route_entry to have important bits first 2024-02-05 14:17:55 -05:00
router-id.c zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
router-id.h zebra: convert vrf configuration output to NB 2024-01-28 23:28:40 +02:00
rt_netlink.c lib, nhrpd: Move neighbor reg/unreg to lib/zclient.c 2024-01-22 12:14:59 -05:00
rt_netlink.h zebra: support route replace semantics in FPM 2023-09-04 15:38:03 -03:00
rt_socket.c lib: remove net/route.h it is not used 2024-01-09 12:50:40 -05:00
rt.h *: Introduce Local Host Routes to FRR 2023-11-01 17:13:06 -04:00
rtadv.c zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
rtadv.h zebra: convert interface ipv6 nd dnssl command to NB 2024-01-28 23:28:40 +02:00
rtread_netlink.c Merge pull request #12780 from opensourcerouting/spdx-license-id 2023-02-17 09:43:05 -05:00
rtread_sysctl.c lib: remove net/route.h it is not used 2024-01-09 12:50:40 -05:00
rule_netlink.c *: Remove netlink headers from lib/zebra.h 2023-11-07 06:46:19 -05:00
rule_netlink.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
rule_socket.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
sample_plugin.c *: Convert struct event_master to struct event_loop 2023-03-24 08:32:17 -04:00
subdir.am zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
table_manager.c lib, mgmtd, zebra: cleanup of zebra conversion to mgmtd 2024-01-28 23:46:38 +02:00
table_manager.h zebra: convert table range command to NB 2024-01-28 23:28:40 +02:00
tc_netlink.c *: Remove netlink headers from lib/zebra.h 2023-11-07 06:46:19 -05:00
tc_netlink.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
tc_socket.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
testrib.conf
zapi_msg.c lib,zebra: add zapi message to control noarp flag 2024-01-24 10:05:29 +01:00
zapi_msg.h lib, nhrpd: Move neighbor reg/unreg to lib/zclient.c 2024-01-22 12:14:59 -05:00
zebra_affinitymap.c zebra: rework affinity-map update hook 2024-01-19 03:47:11 +02:00
zebra_affinitymap.h lib,zebra: add affinity-map configuration hooks 2023-02-10 13:52:01 +01:00
zebra_cli.c lib, zebra: fix exit commands 2024-04-18 06:34:21 +00:00
zebra_cli.h zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
zebra_dplane.c zebra: ctx has to be non NULL at this point 2024-01-04 11:13:31 +01:00
zebra_dplane.h zebra: Add code to set SRv6 encap source addr in dplane 2023-12-14 14:56:44 +01:00
zebra_errors.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_errors.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_evpn_mac.c zebra:fix evpn dup detected local mac del event 2023-04-20 15:45:39 -07:00
zebra_evpn_mac.h *: Rename struct thread to struct event 2023-03-24 08:32:17 -04:00
zebra_evpn_mh.c zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
zebra_evpn_mh.h zebra: Use uint16_t for DF preference 2024-02-06 14:03:36 +02:00
zebra_evpn_neigh.c *: Remove netlink headers from lib/zebra.h 2023-11-07 06:46:19 -05:00
zebra_evpn_neigh.h *: Convert THREAD_XXX macros to EVENT_XXX macros 2023-03-24 08:32:17 -04:00
zebra_evpn_vxlan.h Merge pull request #12780 from opensourcerouting/spdx-license-id 2023-02-17 09:43:05 -05:00
zebra_evpn.c *: convert struct interface->connected to DLIST 2023-11-22 23:00:30 +01:00
zebra_evpn.h Merge pull request #12780 from opensourcerouting/spdx-license-id 2023-02-17 09:43:05 -05:00
zebra_fpm_dt.c *: Remove netlink headers from lib/zebra.h 2023-11-07 06:46:19 -05:00
zebra_fpm_netlink.c *: Remove netlink headers from lib/zebra.h 2023-11-07 06:46:19 -05:00
zebra_fpm_private.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_fpm_protobuf.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_fpm.c *: Remove netlink headers from lib/zebra.h 2023-11-07 06:46:19 -05:00
zebra_gr.c *: Introduce Local Host Routes to FRR 2023-11-01 17:13:06 -04:00
zebra_l2_bridge_if.c *: Add a hash_clean_and_free() function 2023-03-21 08:54:21 -04:00
zebra_l2_bridge_if.h zebra: multiple vlan aware bridge data structure and related changes 2023-02-13 18:12:04 -05:00
zebra_l2.c zebra: Fix crashes in interface change 2023-08-17 09:43:06 -04:00
zebra_l2.h zebra: Use zebra dplane for RTM link and addr 2023-07-05 13:03:14 -04:00
zebra_mlag_private.c *: Convert event.h to frrevent.h 2023-03-24 08:32:17 -04:00
zebra_mlag_vty.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_mlag_vty.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_mlag.c *: Let's use the native IFNAMSIZ instead of INTERFACE_NAMSIZ 2023-11-21 08:08:29 -05:00
zebra_mlag.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_mpls_netlink.c *: remove sys/stat.h from zebra.h 2024-01-09 12:39:23 -05:00
zebra_mpls_null.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_mpls_openbsd.c *: sys/uio.h does not need to be in zebra.h 2024-01-04 15:34:22 -05:00
zebra_mpls_vty.c zebra: fix mpls command 2024-05-18 13:13:09 +00:00
zebra_mpls.c zebra: fix mpls command 2024-05-18 13:13:09 +00:00
zebra_mpls.h zebra: Unregister mpls hooks on zebra shutdown 2023-11-21 12:41:18 -05:00
zebra_mroute.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_mroute.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_nb_config.c zebra: fix encoded DNSSL length 2024-04-16 04:20:40 +00:00
zebra_nb_rpcs.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_nb_state.c zebra: fix oper-state walk bug 2023-12-28 17:53:40 +00:00
zebra_nb.c lib: fix nb callbacks for containers inside choice case 2024-02-25 21:55:03 +00:00
zebra_nb.h lib: fix nb callbacks for containers inside choice case 2024-02-25 21:55:03 +00:00
zebra_neigh.c zebra: Remove static ARP entries on interface down events 2023-11-06 15:00:59 +02:00
zebra_neigh.h zebra: Remove static ARP entries on interface down events 2023-11-06 15:00:59 +02:00
zebra_netns_id.c *: zebra.h should not have fcntl.h 2024-01-09 12:50:40 -05:00
zebra_netns_id.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_netns_notify.c *: zebra.h should not have fcntl.h 2024-01-09 12:50:40 -05:00
zebra_netns_notify.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_nhg_private.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_nhg.c zebra: Ensure non-equal id's are not same nhg's 2024-08-12 19:00:58 +00:00
zebra_nhg.h zebra: Fix NEXTHOP_GROUP_FPM define value 2024-01-20 19:10:07 -05:00
zebra_ns.c zebra: fix heap-use-after free on ns shutdown 2024-10-16 13:16:15 +00:00
zebra_ns.h zebra: fix heap-use-after free on ns shutdown 2024-10-16 13:16:15 +00:00
zebra_opaque.c zebra: clean up coverity warning in opaque api 2023-06-26 13:19:23 -04:00
zebra_opaque.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_pbr.c *: Let's use the native IFNAMSIZ instead of INTERFACE_NAMSIZ 2023-11-21 08:08:29 -05:00
zebra_pbr.h *: Let's use the native IFNAMSIZ instead of INTERFACE_NAMSIZ 2023-11-21 08:08:29 -05:00
zebra_ptm_redistribute.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_ptm_redistribute.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_ptm.c zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
zebra_ptm.h zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
zebra_pw.c zebra: Properly unregister hook on shutdown 2023-12-11 15:22:07 -05:00
zebra_pw.h zebra: Properly unregister hook on shutdown 2023-12-11 15:22:07 -05:00
zebra_rib.c Merge pull request #15216 from donaldsharp/zebra_opaque_mem_leak 2024-02-02 10:54:20 -06:00
zebra_rnh.c Merge pull request #12600 from donaldsharp/local_routes 2023-12-05 11:00:44 -05:00
zebra_rnh.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_routemap_nb_config.c zebra: remove checks for src address existence when using "set src" 2021-08-02 18:35:30 +03:00
zebra_routemap_nb.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_routemap_nb.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_routemap.c zebra: Deny the routes if ip protocol CLI refers to an undefined rmap 2024-05-21 14:53:51 +00:00
zebra_routemap.h zebra: convert vrf configuration output to NB 2024-01-28 23:28:40 +02:00
zebra_router.c zebra: support yielding between oper state routes query 2023-12-28 17:53:40 +00:00
zebra_router.h zebra: support yielding between oper state routes query 2023-12-28 17:53:40 +00:00
zebra_script.c zebra: Add code to set SRv6 encap source addr in dplane 2023-12-14 14:56:44 +01:00
zebra_script.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_snmp.c zebra: Add missing proto translations 2024-09-25 18:51:41 +00:00
zebra_srte.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_srte.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_srv6_vty.c zebra: Add encap source address to SRv6 config write function 2023-12-14 14:58:35 +01:00
zebra_srv6_vty.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_srv6.c zebra: Fetch actual SRv6 encap src addr on startup 2023-12-14 14:58:35 +01:00
zebra_srv6.h zebra, lib, vtysh: Add CLI cmd to set/unset SRv6 encap source address 2023-12-14 14:58:33 +01:00
zebra_tc.c zebra: Set Free Functions for Traffic Control Hash Tables 2023-11-29 16:33:54 +04:00
zebra_tc.h zebra: Set Free Functions for Traffic Control Hash Tables 2023-11-29 16:33:54 +04:00
zebra_trace.c zebra: Add initial zebra tracepoint support 2022-04-20 09:39:47 -04:00
zebra_trace.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
zebra_vrf.c zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
zebra_vrf.h zebra: convert to mgmtd 2024-01-28 23:28:40 +02:00
zebra_vty.c vtysh, zebra: Fix malformed json output for multiple vrfs in command 'show ip route vrf all json' 2024-03-30 20:39:41 +00:00
zebra_vxlan_if.c *: Add a hash_clean_and_free() function 2023-03-21 08:54:21 -04:00
zebra_vxlan_if.h zebra: Fix for mcast-group update and delete per vni for svd 2023-02-13 18:12:05 -05:00
zebra_vxlan_private.h Merge pull request #12780 from opensourcerouting/spdx-license-id 2023-02-17 09:43:05 -05:00
zebra_vxlan.c zebra: fix EVPN svd based remote nh neigh del 2024-05-08 19:38:18 +00:00
zebra_vxlan.h zebra: fix vni NB conversion 2024-01-28 23:28:40 +02:00
zserv.c *: Rename ZEBRA_NHRP_NEIGH_XXX to ZEBRA_NEIGH_XXX 2024-01-22 12:14:59 -05:00
zserv.h *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00