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
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 @@
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 @@
#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 @@
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 @@
#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 @@
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 @@
#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;