diff options
author | Mohammed Javid <mjavid@codeaurora.org> | 2017-07-27 17:18:51 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-10-17 01:03:08 -0700 |
commit | cebbb78d45d2a38d49c0701c997606a7dc6b088d (patch) | |
tree | 8ef74203a29a4e5c5f5eca9924f93ed4880c0364 /ipacm | |
parent | f27d63abc9e82e8018ca1086678afb943d8a5b1f (diff) | |
download | ipacfg-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.cpp | 39 |
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; |