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;