diff options
author | Chaitanya Pratapa <cpratapa@codeaurora.org> | 2020-12-10 18:44:26 -0800 |
---|---|---|
committer | Chaitanya Pratapa <cpratapa@codeaurora.org> | 2020-12-10 22:54:35 -0800 |
commit | 286830306063751378d274cb85d405cc8f5d53d1 (patch) | |
tree | ab43c16e49d8323931ed539f5558ff8c5804865f | |
parent | f443c4a504ab0f0edf9858dfc3f63c4698ac2ae2 (diff) | |
download | ipacfg-mgr-286830306063751378d274cb85d405cc8f5d53d1.tar.gz |
ipacm: add null pointer checks in LanToLan instance
Make changes to add null pointer checks in LanToLan instance to avoid any
potential ipacm issues.
Change-Id: I7331bf3e9b2d777872b6dfc03fa811d2a2925d8d
-rw-r--r-- | ipacm/src/IPACM_LanToLan.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ipacm/src/IPACM_LanToLan.cpp b/ipacm/src/IPACM_LanToLan.cpp index ea016ef..0075418 100644 --- a/ipacm/src/IPACM_LanToLan.cpp +++ b/ipacm/src/IPACM_LanToLan.cpp @@ -1308,8 +1308,12 @@ void IPACM_LanToLan_Iface::handle_down_event() it_own_peer_info++) { /* decrement reference count of peer l2 header type on both interfaces*/ - decrement_ref_cnt_peer_l2_hdr_type(it_own_peer_info->peer->get_iface_pointer()->tx_prop->tx[0].hdr_l2_type); - it_own_peer_info->peer->decrement_ref_cnt_peer_l2_hdr_type(m_p_iface->tx_prop->tx[0].hdr_l2_type); + if (it_own_peer_info->peer && + it_own_peer_info->peer->get_iface_pointer() && + it_own_peer_info->peer->get_iface_pointer()->tx_prop) + decrement_ref_cnt_peer_l2_hdr_type(it_own_peer_info->peer->get_iface_pointer()->tx_prop->tx[0].hdr_l2_type); + if (it_own_peer_info->peer && m_p_iface && m_p_iface->tx_prop) + it_own_peer_info->peer->decrement_ref_cnt_peer_l2_hdr_type(m_p_iface->tx_prop->tx[0].hdr_l2_type); /* first clear all flt rule on target interface */ IPACMDBG_H("Clear all flt rule on target interface.\n"); @@ -1330,7 +1334,8 @@ void IPACM_LanToLan_Iface::handle_down_event() other_iface->clear_all_rt_rule_for_one_peer_iface(&(*it_other_iface_peer_info)); /* remove the peer info from the list */ other_iface->m_peer_iface_info.erase(it_other_iface_peer_info); - other_iface->del_hdr_proc_ctx(m_p_iface->tx_prop->tx[0].hdr_l2_type); + if (m_p_iface && m_p_iface->tx_prop) + other_iface->del_hdr_proc_ctx(m_p_iface->tx_prop->tx[0].hdr_l2_type); break; } } @@ -1338,6 +1343,9 @@ void IPACM_LanToLan_Iface::handle_down_event() /* then clear rt rule and hdr proc ctx and release rt table on target interface */ IPACMDBG_H("Clear rt rules and hdr proc ctx and release rt table on target interface.\n"); clear_all_rt_rule_for_one_peer_iface(&(*it_own_peer_info)); + if (it_own_peer_info->peer && + it_own_peer_info->peer->get_iface_pointer() && + it_own_peer_info->peer->get_iface_pointer()->tx_prop) del_hdr_proc_ctx(it_own_peer_info->peer->get_iface_pointer()->tx_prop->tx[0].hdr_l2_type); } m_peer_iface_info.clear(); |