diff options
author | Mohammed Javid <mjavid@codeaurora.org> | 2017-08-03 14:40:28 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-08-16 03:44:21 -0700 |
commit | e33f92bd70c814df5fa01ef357b61d78a5bb4e8c (patch) | |
tree | 2b5c92747d419e3b82b14791ac261e9df98e0456 /ipacm/src/IPACM_Wlan.cpp | |
parent | dce23103b4e93cbeb3804ed47db5a177f4d3a689 (diff) | |
download | ipacfg-mgr-e33f92bd70c814df5fa01ef357b61d78a5bb4e8c.tar.gz |
ipacm: Fix to prevent invalid deletion of filtering rules of IPV6
Add a check to delete filtering rules only
if it is greater than number of rules to
be deleted.
Change-Id: I742440d624726a88077629382bba9ae0201effa7
Diffstat (limited to 'ipacm/src/IPACM_Wlan.cpp')
-rw-r--r-- | ipacm/src/IPACM_Wlan.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp index 9188980..4923199 100644 --- a/ipacm/src/IPACM_Wlan.cpp +++ b/ipacm/src/IPACM_Wlan.cpp @@ -1725,16 +1725,17 @@ int IPACM_Wlan::handle_down_evt() goto fail; } IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v4, NUM_IPV4_ICMP_FLT_RULE); - - if (m_filtering.DeleteFilteringHdls(dft_v4fl_rule_hdl, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES) == false) + if (dft_v4fl_rule_hdl[0] != 0) { - IPACMERR("Error Deleting Filtering Rule, aborting...\n"); - res = IPACM_FAILURE; - goto fail; + if (m_filtering.DeleteFilteringHdls(dft_v4fl_rule_hdl, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES) == false) + { + IPACMERR("Error Deleting Filtering Rule, aborting...\n"); + res = IPACM_FAILURE; + goto fail; + } + IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES); + IPACMDBG_H("Deleted default v4 filter rules successfully.\n"); } - IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES); - IPACMDBG_H("Deleted default v4 filter rules successfully.\n"); - /* delete private-ipv4 filter rules */ #ifdef FEATURE_IPA_ANDROID if(m_filtering.DeleteFilteringHdls(private_fl_rule_hdl, IPA_IP_v4, IPA_MAX_PRIVATE_SUBNET_ENTRIES) == false) @@ -1770,14 +1771,17 @@ int IPACM_Wlan::handle_down_evt() } IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v6, NUM_IPV6_ICMP_FLT_RULE); - if (m_filtering.DeleteFilteringHdls(dft_v6fl_rule_hdl, IPA_IP_v6, IPV6_DEFAULT_FILTERTING_RULES) == false) + if (dft_v6fl_rule_hdl[0] != 0) { - IPACMERR("Error Adding RuleTable(1) to Filtering, aborting...\n"); - res = IPACM_FAILURE; - goto fail; + if (m_filtering.DeleteFilteringHdls(dft_v6fl_rule_hdl, IPA_IP_v6, IPV6_DEFAULT_FILTERTING_RULES) == false) + { + IPACMERR("Error Adding RuleTable(1) to Filtering, aborting...\n"); + res = IPACM_FAILURE; + goto fail; + } + IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v6, IPV6_DEFAULT_FILTERTING_RULES); + IPACMDBG_H("Deleted default v6 filter rules successfully.\n"); } - IPACM_Iface::ipacmcfg->decreaseFltRuleCount(rx_prop->rx[0].src_pipe, IPA_IP_v6, IPV6_DEFAULT_FILTERTING_RULES); - IPACMDBG_H("Deleted default v6 filter rules successfully.\n"); } IPACMDBG_H("finished delete filtering rules\n "); |