mirror of
https://github.com/FRRouting/frr.git
synced 2025-05-01 05:57:15 +02:00
pimd: vrf may be NULL from pim_cmd_lookup_vrf
The call into pim_cmd_lookup_vrf may be NULL and dereferencing it before ensuring that the vrf pointer is non-NULL is a good way to crash. A crash can be initiated in pim: eva# show ip msdp vrf NOEXIST mesh-group vtysh: error reading from pimd: Permission denied (13)Warning: closing connection to pimd because of an I/O error! eva# 2022/08/15 11:47:38 [PHJDC-499N2][EC 100663314] STARVATION: task vtysh_rl_read (560b77f76de6) ran for 16777ms (cpu time 0ms) eva# Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
e89de02895
commit
bddd6bb95e
|
@ -5526,12 +5526,13 @@ DEFUN (show_ip_msdp_mesh_group,
|
||||||
int idx = 2;
|
int idx = 2;
|
||||||
struct pim_msdp_mg *mg;
|
struct pim_msdp_mg *mg;
|
||||||
struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
|
struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
|
||||||
struct pim_instance *pim = vrf->info;
|
struct pim_instance *pim;
|
||||||
struct json_object *json = NULL;
|
struct json_object *json = NULL;
|
||||||
|
|
||||||
if (!vrf)
|
if (!vrf)
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
|
|
||||||
|
pim = vrf->info;
|
||||||
/* Quick case: list is empty. */
|
/* Quick case: list is empty. */
|
||||||
if (SLIST_EMPTY(&pim->msdp.mglist)) {
|
if (SLIST_EMPTY(&pim->msdp.mglist)) {
|
||||||
if (uj)
|
if (uj)
|
||||||
|
|
Loading…
Reference in a new issue