IPACM: fix the crash due to unsupport tether ifaces
When getting the UPSTREAM_ADD event from CNE, IPACM
should check if the tethered ifaces are supported or
not to avoid the crash due to access memory outside
the boundary.
Change-Id: Ib0464ad72c35968638a82a20b396149c6dd44d2f
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 4ee6c10..4e6b396 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -711,6 +711,13 @@
{
ipacm_event_data_iptype *data = (ipacm_event_data_iptype *)param;
ipa_interface_index = iface_ipa_index_query(data->if_index);
+ /* add the check see if tether_iface is valid or not */
+ if (iface_ipa_index_query(data->if_index_tether) == INVALID_IFACE)
+ {
+ IPACMERR("UPSTREAM_ROUTE_ADD tether_if(%d), not valid ignore\n", INVALID_IFACE);
+ return;
+ }
+
if (ipa_interface_index == ipa_if_num)
{
IPACMDBG_H("Received IPA_WAN_UPSTREAM_ROUTE_ADD_EVENT (Android) for ip-type (%d)\n", data->iptype);
@@ -808,6 +815,13 @@
{
ipacm_event_data_iptype *data = (ipacm_event_data_iptype *)param;
ipa_interface_index = iface_ipa_index_query(data->if_index);
+ /* add the check see if tether_iface is valid or not */
+ if (iface_ipa_index_query(data->if_index_tether) == INVALID_IFACE)
+ {
+ IPACMERR("UPSTREAM_ROUTE_DEL tether_if(%d), not valid ignore\n", INVALID_IFACE);
+ return;
+ }
+
if (ipa_interface_index == ipa_if_num)
{
IPACMDBG_H("Received IPA_WAN_UPSTREAM_ROUTE_DEL_EVENT\n");