summaryrefslogtreecommitdiff
path: root/ipacm
diff options
context:
space:
mode:
authorMohammed Javid <mjavid@codeaurora.org>2017-07-27 17:18:51 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2017-10-17 01:03:08 -0700
commitcebbb78d45d2a38d49c0701c997606a7dc6b088d (patch)
tree8ef74203a29a4e5c5f5eca9924f93ed4880c0364 /ipacm
parentf27d63abc9e82e8018ca1086678afb943d8a5b1f (diff)
downloadipacfg-mgr-cebbb78d45d2a38d49c0701c997606a7dc6b088d.tar.gz
ipacm: Fix invalid source pipe index
Source pipe index may returned invalid. Check it for valid return before sending it to Q6. Change-Id: I5a37deb40a48321af97db9626998e8065878ee7d
Diffstat (limited to 'ipacm')
-rw-r--r--ipacm/src/IPACM_Lan.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index b39c678..8efaf23 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -1112,6 +1112,12 @@ int IPACM_Lan::handle_wan_down(bool is_sta_mode)
memset(&flt_index, 0, sizeof(flt_index));
flt_index.source_pipe_index = ioctl(fd, IPA_IOC_QUERY_EP_MAPPING, rx_prop->rx[0].src_pipe);
+ if (flt_index.source_pipe_index == -1)
+ {
+ IPACMERR("Error Query src pipe idx, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
flt_index.install_status = IPA_QMI_RESULT_SUCCESS_V01;
#ifndef FEATURE_IPA_V3
flt_index.filter_index_list_len = 0;
@@ -1121,6 +1127,12 @@ int IPACM_Lan::handle_wan_down(bool is_sta_mode)
#endif
flt_index.embedded_pipe_index_valid = 1;
flt_index.embedded_pipe_index = ioctl(fd, IPA_IOC_QUERY_EP_MAPPING, IPA_CLIENT_APPS_LAN_WAN_PROD);
+ if (flt_index.embedded_pipe_index == -1)
+ {
+ IPACMERR("Error Query emb pipe idx, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
flt_index.retain_header_valid = 1;
flt_index.retain_header = 0;
flt_index.embedded_call_mux_id_valid = 1;
@@ -3076,6 +3088,13 @@ int IPACM_Lan::handle_uplink_filter_rule(ipacm_ext_prop *prop, ipa_ip_type iptyp
memset(&flt_index, 0, sizeof(flt_index));
flt_index.source_pipe_index = ioctl(fd, IPA_IOC_QUERY_EP_MAPPING, rx_prop->rx[0].src_pipe);
+ if (flt_index.source_pipe_index == -1)
+ {
+ IPACMERR("Error Query src pipe idx, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
+
flt_index.install_status = IPA_QMI_RESULT_SUCCESS_V01;
#ifndef FEATURE_IPA_V3
flt_index.filter_index_list_len = prop->num_ext_props;
@@ -3085,6 +3104,13 @@ int IPACM_Lan::handle_uplink_filter_rule(ipacm_ext_prop *prop, ipa_ip_type iptyp
#endif
flt_index.embedded_pipe_index_valid = 1;
flt_index.embedded_pipe_index = ioctl(fd, IPA_IOC_QUERY_EP_MAPPING, IPA_CLIENT_APPS_LAN_WAN_PROD);
+ if (flt_index.embedded_pipe_index == -1)
+ {
+ IPACMERR("Error Query emb pipe idx, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
+
flt_index.retain_header_valid = 1;
flt_index.retain_header = 0;
flt_index.embedded_call_mux_id_valid = 1;
@@ -3370,6 +3396,12 @@ int IPACM_Lan::handle_wan_down_v6(bool is_sta_mode)
memset(&flt_index, 0, sizeof(flt_index));
flt_index.source_pipe_index = ioctl(fd, IPA_IOC_QUERY_EP_MAPPING, rx_prop->rx[0].src_pipe);
+ if (flt_index.source_pipe_index == -1)
+ {
+ IPACMERR("Error Query src pipe idx, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
flt_index.install_status = IPA_QMI_RESULT_SUCCESS_V01;
#ifndef FEATURE_IPA_V3
flt_index.filter_index_list_len = 0;
@@ -3379,6 +3411,13 @@ int IPACM_Lan::handle_wan_down_v6(bool is_sta_mode)
#endif
flt_index.embedded_pipe_index_valid = 1;
flt_index.embedded_pipe_index = ioctl(fd, IPA_IOC_QUERY_EP_MAPPING, IPA_CLIENT_APPS_LAN_WAN_PROD);
+ if (flt_index.embedded_pipe_index == -1)
+ {
+ IPACMERR("Error Query emb pipe idx, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
+
flt_index.retain_header_valid = 1;
flt_index.retain_header = 0;
flt_index.embedded_call_mux_id_valid = 1;