diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2025-02-26 12:47:57 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-26 12:47:57 -0500 |
| commit | 598eaf37f87f6db2f8d1c2711d67469b324f1311 (patch) | |
| tree | 12e626da2da4474af6385475acdbf8f5b9cfd800 /ospf6d/ospf6_intra.c | |
| parent | 62c0f3a4fb3e4c85dc161725956b1175060c94ed (diff) | |
| parent | 06af50eacec8660fada0d4fd5cd11f0ade4e3c6c (diff) | |
Merge pull request #18254 from LabNConsulting/aceelindem/ospf6-abr-calc-addr-sanity
ospf6d: Fix use after free of router in OSPFv3 ABR route calculation.
Diffstat (limited to 'ospf6d/ospf6_intra.c')
| -rw-r--r-- | ospf6d/ospf6_intra.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/ospf6d/ospf6_intra.c b/ospf6d/ospf6_intra.c index 4765c29e1e..da67c4ed67 100644 --- a/ospf6d/ospf6_intra.c +++ b/ospf6d/ospf6_intra.c @@ -2194,9 +2194,15 @@ void ospf6_intra_brouter_calculation(struct ospf6_area *oa) zlog_info("%s: brouter %s appears via area %s", __func__, brouter_name, oa->name); + ospf6_route_lock(brouter); /* newly added */ if (hook_add) (*hook_add)(brouter); + if (CHECK_FLAG(brouter->flag, OSPF6_ROUTE_WAS_REMOVED)) { + ospf6_route_unlock(brouter); + brouter = NULL; + } else + ospf6_route_unlock(brouter); } else { if (IS_OSPF6_DEBUG_BROUTER_SPECIFIC_ROUTER_ID( brouter_id) |
