Merge "IPACM: Add error check while querying TX and RX properties"
diff --git a/ipacm/src/IPACM_Iface.cpp b/ipacm/src/IPACM_Iface.cpp
index 0606ab4..6f0848f 100644
--- a/ipacm/src/IPACM_Iface.cpp
+++ b/ipacm/src/IPACM_Iface.cpp
@@ -543,15 +543,15 @@
close(fd);
return IPACM_FAILURE;
}
- memcpy(tx_prop->name, dev_name, sizeof(tx_prop->name));
- tx_prop->num_tx_props = iface_query->num_tx_props;
+ memcpy(tx_prop->name, dev_name, sizeof(tx_prop->name));
+ tx_prop->num_tx_props = iface_query->num_tx_props;
- if (ioctl(fd, IPA_IOC_QUERY_INTF_TX_PROPS, tx_prop) < 0)
- {
- PERROR("ioctl IPA_IOC_QUERY_INTF_TX_PROPS failed\n");
- /* tx_prop memory will free when iface-down*/
- res = IPACM_FAILURE;
- }
+ if (ioctl(fd, IPA_IOC_QUERY_INTF_TX_PROPS, tx_prop) < 0)
+ {
+ PERROR("ioctl IPA_IOC_QUERY_INTF_TX_PROPS failed\n");
+ /* tx_prop memory will free when iface-down*/
+ res = IPACM_FAILURE;
+ }
if (res != IPACM_FAILURE)
{
@@ -562,12 +562,28 @@
tx_prop->tx[cnt].ip, tx_prop->tx[cnt].dst_pipe,
tx_prop->tx[cnt].alt_dst_pipe,
tx_prop->tx[cnt].hdr_name);
+
+ if (tx_prop->tx[cnt].dst_pipe == 0)
+ {
+ IPACMERR("Tx(%d): wrong tx property: dst_pipe: 0.\n", cnt);
+ close(fd);
+ return IPACM_FAILURE;
+ }
+ if (tx_prop->tx[cnt].alt_dst_pipe == 0 &&
+ ((memcmp(dev_name, "wlan0", sizeof("wlan0")) == 0) ||
+ (memcmp(dev_name, "wlan1", sizeof("wlan1")) == 0)))
+ {
+ IPACMERR("Tx(%d): wrong tx property: alt_dst_pipe: 0. \n", cnt);
+ close(fd);
+ return IPACM_FAILURE;
+ }
+
}
}
}
- if (iface_query->num_rx_props > 0)
+ if (iface_query->num_rx_props > 0)
{
rx_prop = (struct ipa_ioc_query_intf_rx_props *)
calloc(1, sizeof(struct ipa_ioc_query_intf_rx_props) +
@@ -578,16 +594,16 @@
close(fd);
return IPACM_FAILURE;
}
- memcpy(rx_prop->name, dev_name,
+ memcpy(rx_prop->name, dev_name,
sizeof(rx_prop->name));
- rx_prop->num_rx_props = iface_query->num_rx_props;
+ rx_prop->num_rx_props = iface_query->num_rx_props;
- if (ioctl(fd, IPA_IOC_QUERY_INTF_RX_PROPS, rx_prop) < 0)
- {
- PERROR("ioctl IPA_IOC_QUERY_INTF_RX_PROPS failed\n");
- /* rx_prop memory will free when iface-down*/
- res = IPACM_FAILURE;
- }
+ if (ioctl(fd, IPA_IOC_QUERY_INTF_RX_PROPS, rx_prop) < 0)
+ {
+ PERROR("ioctl IPA_IOC_QUERY_INTF_RX_PROPS failed\n");
+ /* rx_prop memory will free when iface-down*/
+ res = IPACM_FAILURE;
+ }
if (res != IPACM_FAILURE)
{