diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2022-08-15 11:49:50 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2022-08-15 15:45:05 -0400 |
| commit | 43a8e0ac88482a61aa99134b744805bf3a6b8e4c (patch) | |
| tree | 1db5583e607fc232ae07663a4bab45d81724a5fb /lib/link_state.c | |
| parent | bddd6bb95ef6eb521e2d3dbb70b368b6430f0552 (diff) | |
lib: Ensure ls_msg2edge does not use memory after freeing
ls_msg2edge calls ls_edge_del_all which will free the
edge variable. Ensure that FRR properly returns NULL.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'lib/link_state.c')
| -rw-r--r-- | lib/link_state.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/link_state.c b/lib/link_state.c index 0ef87b7a51..ab5a8515b5 100644 --- a/lib/link_state.c +++ b/lib/link_state.c @@ -1791,9 +1791,10 @@ struct ls_edge *ls_msg2edge(struct ls_ted *ted, struct ls_message *msg, case LS_MSG_EVENT_DELETE: edge = ls_find_edge_by_source(ted, attr); if (edge) { - if (delete) + if (delete) { ls_edge_del_all(ted, edge); - else + edge = NULL; + } else edge->status = DELETE; } break; |
