Merge "IPACM: fix klocwork issue"
diff --git a/ipacm/inc/IPACM_Iface.h b/ipacm/inc/IPACM_Iface.h
index 436e99e..0520dba 100644
--- a/ipacm/inc/IPACM_Iface.h
+++ b/ipacm/inc/IPACM_Iface.h
@@ -51,6 +51,7 @@
#include "IPACM_Log.h"
#include "IPACM_Config.h"
#include "IPACM_Defs.h"
+#include <string.h>
/* current support 2 ipv6-address*/
#define MAX_DEFAULT_v4_ROUTE_RULES 1
@@ -121,6 +122,12 @@
/*Query the IPA endpoint property */
int query_iface_property(void);
+ /*implement IPACM strlcpy */
+ size_t strlcpy(char *dest, const char *src, size_t size);
+
+ /*implement IPACM strlcat */
+ size_t strlcat(char *dest, const char *src, size_t n);
+
/*Configure the initial filter rules */
virtual int init_fl_rule(ipa_ip_type iptype);
diff --git a/ipacm/src/IPACM_Config.cpp b/ipacm/src/IPACM_Config.cpp
index c8d145a..ba6ea27 100644
--- a/ipacm/src/IPACM_Config.cpp
+++ b/ipacm/src/IPACM_Config.cpp
@@ -82,6 +82,11 @@
char IPACM_config_file[IPA_MAX_FILE_LEN];
IPACM_conf_t *cfg;
cfg = (IPACM_conf_t *)malloc(sizeof(IPACM_conf_t));
+ if(cfg == NULL)
+ {
+ IPACMERR("Unable to allocate cfg memory.\n");
+ return IPACM_FAILURE;
+ }
uint32_t subnet_addr;
uint32_t subnet_mask;
int i, ret = IPACM_SUCCESS;
@@ -117,6 +122,12 @@
}
iface_table = (ipa_ifi_dev_name_t *)calloc(ipa_num_ipa_interfaces,
sizeof(ipa_ifi_dev_name_t));
+ if(iface_table == NULL)
+ {
+ IPACMERR("Unable to allocate iface_table memory.\n");
+ ret = IPACM_FAILURE;
+ goto fail;;
+ }
for (i = 0; i < cfg->iface_config.num_iface_entries; i++)
{
@@ -158,7 +169,13 @@
}
alg_table = (ipacm_alg *)calloc(ipa_num_alg_ports,
sizeof(ipacm_alg));
-
+ if(alg_table == NULL)
+ {
+ IPACMERR("Unable to allocate alg_table memory.\n");
+ ret = IPACM_FAILURE;
+ free(iface_table);
+ goto fail;;
+ }
for (i = 0; i < cfg->alg_config.num_alg_entries; i++)
{
alg_table[i].protocol = cfg->alg_config.alg_entries[i].protocol;
@@ -181,6 +198,8 @@
{
IPACMERR("unable to allocate nat ifaces\n");
ret = IPACM_FAILURE;
+ free(iface_table);
+ free(alg_table);
goto fail;
}
diff --git a/ipacm/src/IPACM_Filtering.cpp b/ipacm/src/IPACM_Filtering.cpp
index ef988a8..fac26a2 100644
--- a/ipacm/src/IPACM_Filtering.cpp
+++ b/ipacm/src/IPACM_Filtering.cpp
@@ -279,6 +279,8 @@
{
for(cnt = rule_table_v4->num_rules - 1; cnt >= 0; cnt--)
{
+ if (pos < QMI_IPA_MAX_FILTERS_V01)
+ {
qmi_rule_msg.filter_spec_list[pos].filter_spec_identifier = pos;
qmi_rule_msg.filter_spec_list[pos].ip_type = QMI_IPA_IP_TYPE_V4_V01;
qmi_rule_msg.filter_spec_list[pos].filter_action = GetQmiFilterAction(rule_table_v4->rules[cnt].rule.action);
@@ -291,12 +293,19 @@
sizeof(struct ipa_filter_rule_type_v01));
pos++;
}
+ else
+ {
+ IPACMERR(" QMI only support max %d rules, current (%d)\n ",QMI_IPA_MAX_FILTERS_V01, pos);
+ }
+ }
}
if(rule_table_v6 != NULL)
{
for(cnt = rule_table_v6->num_rules - 1; cnt >= 0; cnt--)
{
+ if (pos < QMI_IPA_MAX_FILTERS_V01)
+ {
qmi_rule_msg.filter_spec_list[pos].filter_spec_identifier = pos;
qmi_rule_msg.filter_spec_list[pos].ip_type = QMI_IPA_IP_TYPE_V6_V01;
qmi_rule_msg.filter_spec_list[pos].filter_action = GetQmiFilterAction(rule_table_v6->rules[cnt].rule.action);
@@ -309,6 +318,11 @@
sizeof(struct ipa_filter_rule_type_v01));
pos++;
}
+ else
+ {
+ IPACMERR(" QMI only support max %d rules, current (%d)\n ",QMI_IPA_MAX_FILTERS_V01, pos);
+ }
+ }
}
ret = ioctl(fd_wwan_ioctl, WAN_IOC_ADD_FLT_RULE, &qmi_rule_msg);
diff --git a/ipacm/src/IPACM_Iface.cpp b/ipacm/src/IPACM_Iface.cpp
index e55ff2f..200b0d8 100644
--- a/ipacm/src/IPACM_Iface.cpp
+++ b/ipacm/src/IPACM_Iface.cpp
@@ -505,7 +505,11 @@
iface_query = (struct ipa_ioc_query_intf *)
calloc(1, sizeof(struct ipa_ioc_query_intf));
-
+ if(iface_query == NULL)
+ {
+ IPACMERR("Unable to allocate iface_query memory.\n");
+ return IPACM_FAILURE;
+ }
IPACMDBG("iface name %s\n", dev_name);
memcpy(iface_query->name, dev_name, sizeof(dev_name));
@@ -521,7 +525,11 @@
tx_prop = (struct ipa_ioc_query_intf_tx_props *)
calloc(1, sizeof(struct ipa_ioc_query_intf_tx_props) +
iface_query->num_tx_props * sizeof(struct ipa_ioc_tx_intf_prop));
-
+ if(tx_prop == NULL)
+ {
+ IPACMERR("Unable to allocate tx_prop memory.\n");
+ return IPACM_FAILURE;
+ }
memcpy(tx_prop->name, dev_name, sizeof(tx_prop->name));
tx_prop->num_tx_props = iface_query->num_tx_props;
@@ -548,7 +556,11 @@
rx_prop = (struct ipa_ioc_query_intf_rx_props *)
calloc(1, sizeof(struct ipa_ioc_query_intf_rx_props) +
iface_query->num_rx_props * sizeof(struct ipa_ioc_rx_intf_prop));
-
+ if(rx_prop == NULL)
+ {
+ IPACMERR("Unable to allocate rx_prop memory.\n");
+ return IPACM_FAILURE;
+ }
memcpy(rx_prop->name, dev_name,
sizeof(rx_prop->name));
rx_prop->num_rx_props = iface_query->num_rx_props;
@@ -835,7 +847,6 @@
return res;
}
-
/* get ipa interface name */
int IPACM_Iface::ipa_get_if_index
(
@@ -868,3 +879,48 @@
close(fd);
return IPACM_SUCCESS;
}
+
+size_t IPACM_Iface::strlcpy(char *dest, const char *src, size_t n)
+{
+ size_t ret = strlen(src);
+ size_t len = 0;
+ if (n > 0) {
+ if(ret >= n)
+ {
+ len = n-1;
+ IPACMERR(" overflow detected \n");
+ }
+ else
+ {
+ len = ret;
+ }
+ dest[len] = '\0';
+ memcpy(dest, src, len);
+ }
+ return ret;
+}
+
+size_t IPACM_Iface::strlcat(char *dest, const char *src, size_t n)
+{
+ size_t dsize = strlen(dest);
+ size_t len = strlen(src);
+ size_t ret = dsize + len;
+
+ if (dsize < n)
+ {
+ dest += dsize;
+ n -= dsize;
+ if (len >= n)
+ {
+ len = n - 1;
+ IPACMERR(" overflow detected \n");
+ }
+ dest[len] = '\0';
+ memcpy(dest, src, len);
+ }
+ else
+ {
+ IPACMERR(" dest buffer full\n");
+ }
+ return ret;
+}
diff --git a/ipacm/src/IPACM_Lan.cpp b/ipacm/src/IPACM_Lan.cpp
index ce813bb..8e0d44d 100644
--- a/ipacm/src/IPACM_Lan.cpp
+++ b/ipacm/src/IPACM_Lan.cpp
@@ -65,6 +65,9 @@
}
/* support eth multiple clients */
+ if(iface_query != NULL)
+ {
+
eth_client_len = (sizeof(ipa_eth_client)) + (iface_query->num_tx_props * sizeof(eth_client_rt_hdl));
eth_client = (ipa_eth_client *)calloc(IPA_MAX_NUM_ETH_CLIENTS, eth_client_len);
if (eth_client == NULL)
@@ -75,6 +78,7 @@
IPACMDBG(" IPACM->IPACM_Lan(%d) constructor: Tx:%d Rx:%d\n", ipa_if_num,
iface_query->num_tx_props, iface_query->num_rx_props);
+ }
num_wan_ul_fl_rule_v4 = 0;
num_wan_ul_fl_rule_v6 = 0;
@@ -426,11 +430,17 @@
+ NUM_TCP_CTL_FLT_RULE + IPACM_Iface::ipacmcfg->ipa_num_private_subnet;
#else
flt_rule_count_v4 = IPV4_DEFAULT_FILTERTING_RULES + MAX_OFFLOAD_PAIR
- IPACM_Iface::ipacmcfg->ipa_num_private_subnet;
+ + IPACM_Iface::ipacmcfg->ipa_num_private_subnet;
#endif
if(is_sta_mode == false)
{
+ if (num_wan_ul_fl_rule_v4 > MAX_WAN_UL_FILTER_RULES)
+ {
+ IPACMERR("number of wan_ul_fl_rule_v4 > MAX_WAN_UL_FILTER_RULES, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
if (m_filtering.DeleteFilteringHdls(wan_ul_fl_rule_hdl_v4,
IPA_IP_v4, num_wan_ul_fl_rule_v4) == false)
{
@@ -1013,15 +1023,23 @@
memset(pHeaderDescriptor->hdr[0].name, 0,
sizeof(pHeaderDescriptor->hdr[0].name));
- sprintf(index, "%d", ipa_if_num);
- strncpy(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", ipa_if_num);
+ strlcpy(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name));
- strncat(pHeaderDescriptor->hdr[0].name,
- IPA_ETH_HDR_NAME_v4,
- sizeof(IPA_ETH_HDR_NAME_v4));
+ if (strlcat(pHeaderDescriptor->hdr[0].name, IPA_ETH_HDR_NAME_v4, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
- sprintf(index, "%d", header_name_count);
- strncat(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", header_name_count);
+ if (strlcat(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeaderDescriptor->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeaderDescriptor->hdr[0].hdr_hdl = -1;
@@ -1096,15 +1114,22 @@
memset(pHeaderDescriptor->hdr[0].name, 0,
sizeof(pHeaderDescriptor->hdr[0].name));
- sprintf(index, "%d", ipa_if_num);
- strncpy(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", ipa_if_num);
+ strlcpy(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name));
- strncat(pHeaderDescriptor->hdr[0].name,
- IPA_ETH_HDR_NAME_v6,
- sizeof(IPA_ETH_HDR_NAME_v6));
-
- sprintf(index, "%d", header_name_count);
- strncat(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ if (strlcat(pHeaderDescriptor->hdr[0].name, IPA_ETH_HDR_NAME_v6, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+ snprintf(index,sizeof(index), "%d", header_name_count);
+ if (strlcat(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeaderDescriptor->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeaderDescriptor->hdr[0].hdr_hdl = -1;
@@ -1658,7 +1683,7 @@
{
if (m_filtering.DeleteFilteringHdls(dft_v4fl_rule_hdl, IPA_IP_v4, IPV4_DEFAULT_FILTERTING_RULES) == false)
{
- IPACMERR("Error deleting default filtering Rule, aborting...\n");
+ IPACMERR("Error Deleting Filtering Rule, aborting...\n");
res = IPACM_FAILURE;
goto fail;
}
@@ -1682,6 +1707,13 @@
IPACMDBG("Deleted lan2lan IPv4 flt rules.\n");
/* free private-subnet ipv4 filter rules */
+ if (IPACM_Iface::ipacmcfg->ipa_num_private_subnet > IPA_PRIV_SUBNET_FILTER_RULE_HANDLES)
+ {
+ IPACMERR(" the number of rules are bigger than array, aborting...\n");
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+
if (m_filtering.DeleteFilteringHdls(private_fl_rule_hdl, IPA_IP_v4, IPACM_Iface::ipacmcfg->ipa_num_private_subnet) == false)
{
IPACMERR("Error Deleting RuleTable(1) to Filtering, aborting...\n");
@@ -1742,8 +1774,12 @@
fail:
/* Delete corresponding ipa_rm_resource_name of RX-endpoint after delete all IPV4V6 FT-rule */
+ if (rx_prop != NULL)
+ {
+ free(rx_prop);
IPACM_Iface::ipacmcfg->DelRmDepend(IPACM_Iface::ipacmcfg->ipa_client_rm_map_tbl[rx_prop->rx[0].src_pipe]);
IPACMDBG("Finished delete dependency \n ");
+ }
if (eth_client != NULL)
{
@@ -1754,10 +1790,6 @@
{
free(tx_prop);
}
- if (rx_prop != NULL)
- {
- free(rx_prop);
- }
if (iface_query != NULL)
{
free(iface_query);
@@ -1934,6 +1966,13 @@
if(is_sta_mode == false)
{
+ if (num_wan_ul_fl_rule_v6 > MAX_WAN_UL_FILTER_RULES)
+ {
+ IPACMERR(" the number of rules are bigger than array, aborting...\n");
+ close(fd);
+ return IPACM_FAILURE;
+ }
+
if (m_filtering.DeleteFilteringHdls(wan_ul_fl_rule_hdl_v6,
IPA_IP_v6, num_wan_ul_fl_rule_v6) == false)
{
@@ -2615,7 +2654,7 @@
pHeader->num_hdrs = 1;
memset(pHeader->hdr[0].name, 0, sizeof(pHeader->hdr[0].name));
- strncpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_USB_HDR_NAME_V4, sizeof(IPA_LAN_TO_LAN_USB_HDR_NAME_V4));
+ strlcpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_USB_HDR_NAME_V4, sizeof(pHeader->hdr[0].name));
for(j=0; j<MAX_OFFLOAD_PAIR; j++)
{
@@ -2632,8 +2671,13 @@
goto fail;
}
lan2lan_hdr_hdl_v4[j].valid = true;
- sprintf(index, "%d", j);
- strncat(pHeader->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", j);
+ if (strlcat(pHeader->hdr[0].name, index, sizeof(pHeader->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeader->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeader->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeader->hdr[0].is_partial = 0;
@@ -2697,7 +2741,7 @@
pHeader->num_hdrs = 1;
memset(pHeader->hdr[0].name, 0, sizeof(pHeader->hdr[0].name));
- strncpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_USB_HDR_NAME_V6, sizeof(IPA_LAN_TO_LAN_USB_HDR_NAME_V6));
+ strlcpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_USB_HDR_NAME_V6, sizeof(pHeader->hdr[0].name));
for(j=0; j<MAX_OFFLOAD_PAIR; j++)
{
@@ -2714,8 +2758,13 @@
goto fail;
}
lan2lan_hdr_hdl_v6[j].valid = true;
- sprintf(index, "%d", j);
- strncat(pHeader->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", j);
+ if (strlcat(pHeader->hdr[0].name, index, sizeof(pHeader->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeader->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeader->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeader->hdr[0].is_partial = 0;
diff --git a/ipacm/src/IPACM_Main.cpp b/ipacm/src/IPACM_Main.cpp
index cab2963..d52c6b3 100644
--- a/ipacm/src/IPACM_Main.cpp
+++ b/ipacm/src/IPACM_Main.cpp
@@ -1,4 +1,4 @@
-/*
+/*
Copyright (c) 2013, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -12,7 +12,7 @@
with the distribution.
* Neither the name of The Linux Foundation nor the names of its
contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
+ from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
@@ -72,33 +72,45 @@
#include "IPACM_Netlink.h"
const char *ipacm_event_name[] = {
- __stringify(IPA_LINK_UP_EVENT),
- __stringify(IPA_LINK_DOWN_EVENT),
- __stringify(IPA_ADDR_ADD_EVENT),
- __stringify(IPA_ADDR_DEL_EVENT),
- __stringify(IPA_ROUTE_ADD_EVENT),
- __stringify(IPA_ROUTE_DEL_EVENT),
- __stringify(IPA_FIREWALL_CHANGE_EVENT),
- __stringify(IPA_WLAN_AP_LINK_UP_EVENT),
- __stringify(IPA_WLAN_STA_LINK_UP_EVENT),
- __stringify(IPA_WLAN_CLIENT_ADD_EVENT),
- __stringify(IPA_WLAN_CLIENT_DEL_EVENT),
- __stringify(IPA_WLAN_CLIENT_POWER_SAVE_EVENT),
- __stringify(IPA_WLAN_CLIENT_RECOVER_EVENT),
- __stringify(IPA_NEW_NEIGH_EVENT),
- __stringify(IPA_DEL_NEIGH_EVENT),
- __stringify(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT),
- __stringify(IPA_NEIGH_CLIENT_IP_ADDR_DEL_EVENT),
- __stringify(IPA_SW_ROUTING_ENABLE),
- __stringify(IPA_SW_ROUTING_DISABLE),
- __stringify(IPA_PROCESS_CT_MESSAGE),
- __stringify(IPA_HANDLE_WAN_UP),
- __stringify(IPA_HANDLE_WAN_DOWN),
- __stringify(IPA_HANDLE_WLAN_UP),
- __stringify(IPA_HANDLE_LAN_UP),
- __stringify(IPA_WLAN_CLIENT_ADD_EVENT_EX),
- __stringify(IPA_HANDLE_WAN_UP_V6),
- __stringify(IPA_HANDLE_WAN_DOWN_V6),
+ __stringify(IPA_CFG_CHANGE_EVENT), /* 1 NULL */
+ __stringify(IPA_LINK_UP_EVENT), /* 2 ipacm_event_data_fid */
+ __stringify(IPA_LINK_DOWN_EVENT), /* 3 ipacm_event_data_fid */
+ __stringify(IPA_ADDR_ADD_EVENT), /* 4 ipacm_event_data_addr */
+ __stringify(IPA_ADDR_DEL_EVENT), /* 5 no use */
+ __stringify(IPA_ROUTE_ADD_EVENT), /* 6 ipacm_event_data_addr */
+ __stringify(IPA_ROUTE_DEL_EVENT), /* 7 ipacm_event_data_addr */
+ __stringify(IPA_FIREWALL_CHANGE_EVENT), /* 8 NULL */
+ __stringify(IPA_WLAN_AP_LINK_UP_EVENT), /* 9 ipacm_event_data_mac */
+ __stringify(IPA_WLAN_STA_LINK_UP_EVENT), /* 10 ipacm_event_data_mac */
+ __stringify(IPA_WLAN_CLIENT_ADD_EVENT), /* 11 ipacm_event_data_mac */
+ __stringify(IPA_WLAN_CLIENT_DEL_EVENT), /* 12 ipacm_event_data_mac */
+ __stringify(IPA_WLAN_CLIENT_POWER_SAVE_EVENT), /* 13 ipacm_event_data_mac */
+ __stringify(IPA_WLAN_CLIENT_RECOVER_EVENT), /* 14 ipacm_event_data_mac */
+ __stringify(IPA_NEW_NEIGH_EVENT), /* 15 ipacm_event_data_all */
+ __stringify(IPA_DEL_NEIGH_EVENT), /* 16 ipacm_event_data_all */
+ __stringify(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT), /* 17 ipacm_event_data_all */
+ __stringify(IPA_NEIGH_CLIENT_IP_ADDR_DEL_EVENT), /* 18 ipacm_event_data_all */
+ __stringify(IPA_SW_ROUTING_ENABLE), /* 19 NULL */
+ __stringify(IPA_SW_ROUTING_DISABLE), /* 20 NULL */
+ __stringify(IPA_PROCESS_CT_MESSAGE), /* 21 ipacm_ct_evt_data */
+ __stringify(IPA_HANDLE_WAN_UP), /* 22 ipacm_event_iface_up */
+ __stringify(IPA_HANDLE_WAN_DOWN), /* 23 ipacm_event_iface_up */
+ __stringify(IPA_HANDLE_WLAN_UP), /* 24 ipacm_event_iface_up */
+ __stringify(IPA_HANDLE_LAN_UP), /* 25 ipacm_event_iface_up */
+ __stringify(IPA_WLAN_CLIENT_ADD_EVENT_EX), /* 26 ipacm_event_data_wlan_ex */
+ __stringify(IPA_HANDLE_WAN_UP_V6), /* 27 NULL */
+ __stringify(IPA_HANDLE_WAN_DOWN_V6), /* 28 NULL */
+ __stringify(IPA_LAN_CLIENT_ACTIVE), /* 29 ipacm_event_lan_client*/
+ __stringify(IPA_LAN_CLIENT_INACTIVE), /* 30 ipacm_event_lan_client*/
+ __stringify(IPA_LAN_CLIENT_DISCONNECT), /* 31 ipacm_event_lan_client*/
+ __stringify(IPA_LAN_CLIENT_POWER_SAVE), /* 32 ipacm_event_lan_client*/
+ __stringify(IPA_LAN_CLIENT_POWER_RECOVER), /* 33 ipacm_event_lan_client*/
+ __stringify(IPA_LAN_TO_LAN_NEW_CONNECTION), /* 34 ipacm_event_connection */
+ __stringify(IPA_LAN_TO_LAN_DEL_CONNECTION), /* 35 ipacm_event_connection */
+ __stringify(IPA_LAN_DELETE_SELF), /* 36 ipacm_event_data_fid */
+ __stringify(IPA_WLAN_LINK_DOWN_EVENT), /* 37 ipacm_event_data_mac */
+ __stringify(IPA_USB_LINK_UP_EVENT), /* 38 ipacm_event_data_fid */
+ __stringify(IPA_PROCESS_CT_MESSAGE_V6), /* 39 ipacm_ct_evt_data */
};
#define IPA_DRIVER "/dev/ipa"
@@ -169,25 +181,26 @@
while (1)
{
length = read(inotify_fd, buffer, INOTIFY_BUF_LEN);
- struct inotify_event *event = (struct inotify_event *)buffer;
+ struct inotify_event event;
+ memcpy(&event, buffer,sizeof(struct inotify_event));
if (length < 0)
{
- IPACMERR("inotify read() error return length: %d and mask: 0x%x 0x%x\n", length, event->mask, mask);
+ IPACMERR("inotify read() error return length: %d and mask: 0x%x 0x%x\n", length, event.mask, mask);
return NULL;
}
- if (event->len > 0)
+ if (event.len > 0)
{
- if ( (event->mask & IN_MODIFY) || (event->mask & IN_MOVE))
+ if ( (event.mask & IN_MODIFY) || (event.mask & IN_MOVE))
{
- if (event->mask & IN_ISDIR)
+ if (event.mask & IN_ISDIR)
{
- IPACMDBG("The directory %s was 0x%x\n", event->name, event->mask);
+ IPACMDBG("The directory %s was 0x%x\n", event.name, event.mask);
}
- else if (!strncmp(event->name, IPACM_FIREWALL_FILE_NAME, event->len)) // firewall_rule change
+ else if (!strncmp(event.name, IPACM_FIREWALL_FILE_NAME, event.len)) // firewall_rule change
{
- IPACMDBG("File \"%s\" was 0x%x\n", event->name, event->mask);
+ IPACMDBG("File \"%s\" was 0x%x\n", event.name, event.mask);
IPACMDBG("The interested file %s .\n", IPACM_FIREWALL_FILE_NAME);
evt_data.event = IPA_FIREWALL_CHANGE_EVENT;
@@ -196,9 +209,9 @@
/* Insert IPA_FIREWALL_CHANGE_EVENT to command queue */
IPACM_EvtDispatcher::PostEvt(&evt_data);
}
- else if (!strncmp(event->name, IPACM_CFG_FILE_NAME, event->len)) // IPACM_configuration change
+ else if (!strncmp(event.name, IPACM_CFG_FILE_NAME, event.len)) // IPACM_configuration change
{
- IPACMDBG("File \"%s\" was 0x%x\n", event->name, event->mask);
+ IPACMDBG("File \"%s\" was 0x%x\n", event.name, event.mask);
IPACMDBG("The interested file %s .\n", IPACM_CFG_FILE_NAME);
evt_data.event = IPA_CFG_CHANGE_EVENT;
@@ -208,7 +221,7 @@
IPACM_EvtDispatcher::PostEvt(&evt_data);
}
}
- IPACMDBG("Received monitoring event %s.\n", event->name);
+ IPACMDBG("Received monitoring event %s.\n", event.name);
}
}
@@ -223,10 +236,11 @@
{
int length, fd, cnt;
char buffer[IPA_DRIVER_WLAN_BUF_LEN];
- struct ipa_msg_meta *event_hdr = NULL;
- struct ipa_wlan_msg_ex *event_ex = NULL;
- struct ipa_wlan_msg *event_wlan = NULL;
- struct ipa_ecm_msg *event_ecm = NULL;
+ struct ipa_msg_meta event_hdr;
+ struct ipa_ecm_msg event_ecm;
+ struct ipa_wlan_msg_ex event_ex_o;
+ struct ipa_wlan_msg *event_wlan=NULL;
+ struct ipa_wlan_msg_ex *event_ex= NULL;
ipacm_cmd_q_data evt_data;
ipacm_event_data_mac *data = NULL;
@@ -238,7 +252,7 @@
{
IPACMERR("Failed opening %s.\n", IPA_DRIVER);
}
-
+
while (1)
{
IPACMDBG("Waiting for nofications from IPA driver \n");
@@ -254,28 +268,12 @@
return NULL;
}
- event_hdr = (struct ipa_msg_meta *)buffer;
- IPACMDBG("Message type: %d\n", event_hdr->msg_type);
- IPACMDBG("Event header length received: %d\n",event_hdr->msg_len);
-
- if (event_hdr->msg_len > 0)
- {
- if(event_hdr->msg_type == WLAN_CLIENT_CONNECT_EX)
- {
- event_ex = (struct ipa_wlan_msg_ex *)(buffer + sizeof(struct ipa_msg_meta));
- }
- else if (event_hdr->msg_type < IPA_WLAN_EVENT_MAX)
- {
- event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
- }
- else
- {
- event_ecm = (struct ipa_ecm_msg *)(buffer + sizeof(struct ipa_msg_meta));
- }
- }
+ memcpy(&event_hdr, buffer,sizeof(struct ipa_msg_meta));
+ IPACMDBG("Message type: %d\n", event_hdr.msg_type);
+ IPACMDBG("Event header length received: %d\n",event_hdr.msg_len);
/* Insert WLAN_DRIVER_EVENT to command queue */
- switch (event_hdr->msg_type)
+ switch (event_hdr.msg_type)
{
case SW_ROUTING_ENABLE:
@@ -289,73 +287,78 @@
break;
case WLAN_AP_CONNECT:
+ event_wlan = (struct ipa_wlan_msg *) (buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Received WLAN_AP_CONNECT name: %s\n",event_wlan->name);
IPACMDBG("AP Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data_fid = (ipacm_event_data_fid *)malloc(sizeof(ipacm_event_data_fid));
if(data_fid == NULL)
{
IPACMERR("unable to allocate memory for event_wlan data_fid\n");
return NULL;
- }
+ }
ipa_get_if_index(event_wlan->name, &(data_fid->if_index));
evt_data.event = IPA_WLAN_AP_LINK_UP_EVENT;
evt_data.evt_data = data_fid;
break;
case WLAN_AP_DISCONNECT:
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Received WLAN_AP_DISCONNECT name: %s\n",event_wlan->name);
IPACMDBG("AP Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data_fid = (ipacm_event_data_fid *)malloc(sizeof(ipacm_event_data_fid));
if(data_fid == NULL)
{
IPACMERR("unable to allocate memory for event_wlan data_fid\n");
return NULL;
- }
+ }
ipa_get_if_index(event_wlan->name, &(data_fid->if_index));
evt_data.event = IPA_WLAN_LINK_DOWN_EVENT;
evt_data.evt_data = data_fid;
break;
case WLAN_STA_CONNECT:
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Received WLAN_STA_CONNECT name: %s\n",event_wlan->name);
IPACMDBG("STA Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data_fid = (ipacm_event_data_fid *)malloc(sizeof(ipacm_event_data_fid));
if(data_fid == NULL)
{
IPACMERR("unable to allocate memory for event_wlan data_fid\n");
return NULL;
- }
+ }
ipa_get_if_index(event_wlan->name, &(data_fid->if_index));
evt_data.event = IPA_WLAN_STA_LINK_UP_EVENT;
evt_data.evt_data = data_fid;
break;
case WLAN_STA_DISCONNECT:
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Received WLAN_STA_DISCONNECT name: %s\n",event_wlan->name);
IPACMDBG("STA Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data_fid = (ipacm_event_data_fid *)malloc(sizeof(ipacm_event_data_fid));
if(data_fid == NULL)
{
IPACMERR("unable to allocate memory for event_wlan data_fid\n");
return NULL;
- }
+ }
ipa_get_if_index(event_wlan->name, &(data_fid->if_index));
evt_data.event = IPA_WLAN_LINK_DOWN_EVENT;
evt_data.evt_data = data_fid;
break;
-
+
case WLAN_CLIENT_CONNECT:
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Received WLAN_CLIENT_CONNECT\n");
IPACMDBG("Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data = (ipacm_event_data_mac *)malloc(sizeof(ipacm_event_data_mac));
if (data == NULL)
{
@@ -372,13 +375,22 @@
case WLAN_CLIENT_CONNECT_EX:
IPACMDBG("Received WLAN_CLIENT_CONNECT_EX\n");
- data_ex = (ipacm_event_data_wlan_ex *)malloc(sizeof(ipacm_event_data_wlan_ex) + event_ex->num_of_attribs * sizeof(ipa_wlan_hdr_attrib_val));
+ memcpy(&event_ex_o, buffer + sizeof(struct ipa_msg_meta),sizeof(struct ipa_wlan_msg_ex));
+ length = sizeof(ipa_wlan_msg_ex)+ event_ex_o.num_of_attribs * sizeof(ipa_wlan_hdr_attrib_val);
+ IPACMDBG("num_of_attribs %d, length %d\n", event_ex_o.num_of_attribs, length);
+ event_ex = (ipa_wlan_msg_ex *)malloc(length);
+ if(event_ex == NULL )
+ {
+ IPACMERR("Unable to allocate memory\n");
+ return NULL;
+ }
+ memcpy(event_ex, buffer + sizeof(struct ipa_msg_meta), length);
+ data_ex = (ipacm_event_data_wlan_ex *)malloc(sizeof(ipacm_event_data_wlan_ex) + event_ex_o.num_of_attribs * sizeof(ipa_wlan_hdr_attrib_val));
if (data_ex == NULL)
{
IPACMERR("unable to allocate memory for event data\n");
return NULL;
}
-
data_ex->num_of_attribs = event_ex->num_of_attribs;
memcpy(data_ex->attribs,
@@ -405,32 +417,15 @@
ipa_get_if_index(event_ex->name, &(data_ex->if_index));
evt_data.event = IPA_WLAN_CLIENT_ADD_EVENT_EX;
evt_data.evt_data = data_ex;
- break;
-
- case WLAN_CLIENT_DISCONNECT:
- IPACMDBG("Received WLAN_CLIENT_DISCONNECT\n");
- IPACMDBG("Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
- event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
- data = (ipacm_event_data_mac *)malloc(sizeof(ipacm_event_data_mac));
- if (data == NULL)
- {
- IPACMERR("unable to allocate memory for event_wlan data\n");
- return NULL;
- }
- memcpy(data->mac_addr,
- event_wlan->mac_addr,
- sizeof(event_wlan->mac_addr));
- ipa_get_if_index(event_wlan->name, &(data->if_index));
- evt_data.event = IPA_WLAN_CLIENT_DEL_EVENT;
- evt_data.evt_data = data;
+ free(event_ex);
break;
- case WLAN_CLIENT_POWER_SAVE_MODE:
- IPACMDBG("Received WLAN_CLIENT_POWER_SAVE_MODE\n");
+ case WLAN_CLIENT_DISCONNECT:
+ IPACMDBG("Received WLAN_CLIENT_DISCONNECT\n");
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data = (ipacm_event_data_mac *)malloc(sizeof(ipacm_event_data_mac));
if (data == NULL)
{
@@ -439,7 +434,27 @@
}
memcpy(data->mac_addr,
event_wlan->mac_addr,
- sizeof(event_wlan->mac_addr));
+ sizeof(event_wlan->mac_addr));
+ ipa_get_if_index(event_wlan->name, &(data->if_index));
+ evt_data.event = IPA_WLAN_CLIENT_DEL_EVENT;
+ evt_data.evt_data = data;
+ break;
+
+ case WLAN_CLIENT_POWER_SAVE_MODE:
+ IPACMDBG("Received WLAN_CLIENT_POWER_SAVE_MODE\n");
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
+ IPACMDBG("Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
+ event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ data = (ipacm_event_data_mac *)malloc(sizeof(ipacm_event_data_mac));
+ if (data == NULL)
+ {
+ IPACMERR("unable to allocate memory for event_wlan data\n");
+ return NULL;
+ }
+ memcpy(data->mac_addr,
+ event_wlan->mac_addr,
+ sizeof(event_wlan->mac_addr));
ipa_get_if_index(event_wlan->name, &(data->if_index));
evt_data.event = IPA_WLAN_CLIENT_POWER_SAVE_EVENT;
evt_data.evt_data = data;
@@ -447,9 +462,10 @@
case WLAN_CLIENT_NORMAL_MODE:
IPACMDBG("Received WLAN_CLIENT_NORMAL_MODE\n");
+ event_wlan = (struct ipa_wlan_msg *)(buffer + sizeof(struct ipa_msg_meta));
IPACMDBG("Mac Address %02x:%02x:%02x:%02x:%02x:%02x\n",
event_wlan->mac_addr[0], event_wlan->mac_addr[1], event_wlan->mac_addr[2],
- event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
+ event_wlan->mac_addr[3], event_wlan->mac_addr[4], event_wlan->mac_addr[5]);
data = (ipacm_event_data_mac *)malloc(sizeof(ipacm_event_data_mac));
if (data == NULL)
{
@@ -465,32 +481,34 @@
break;
case ECM_CONNECT:
- IPACMDBG("Received ECM_CONNECT name: %s\n",event_ecm->name);
+ memcpy(&event_ecm, buffer + sizeof(struct ipa_msg_meta), sizeof(struct ipa_ecm_msg));
+ IPACMDBG("Received ECM_CONNECT name: %s\n",event_ecm.name);
data_fid = (ipacm_event_data_fid *)malloc(sizeof(ipacm_event_data_fid));
if(data_fid == NULL)
{
IPACMERR("unable to allocate memory for event_ecm data_fid\n");
return NULL;
}
- data_fid->if_index = event_ecm->ifindex;
+ data_fid->if_index = event_ecm.ifindex;
evt_data.event = IPA_USB_LINK_UP_EVENT;
evt_data.evt_data = data_fid;
break;
case ECM_DISCONNECT:
- IPACMDBG("Received ECM_DISCONNECT name: %s\n",event_ecm->name);
+ memcpy(&event_ecm, buffer + sizeof(struct ipa_msg_meta), sizeof(struct ipa_ecm_msg));
+ IPACMDBG("Received ECM_DISCONNECT name: %s\n",event_ecm.name);
data_fid = (ipacm_event_data_fid *)malloc(sizeof(ipacm_event_data_fid));
if(data_fid == NULL)
{
IPACMERR("unable to allocate memory for event_ecm data_fid\n");
return NULL;
}
- data_fid->if_index = event_ecm->ifindex;
+ data_fid->if_index = event_ecm.ifindex;
evt_data.event = IPA_LINK_DOWN_EVENT;
evt_data.evt_data = data_fid;
break;
default:
- IPACMDBG("Unhandled message type: %d\n", event_hdr->msg_type);
+ IPACMDBG("Unhandled message type: %d\n", event_hdr.msg_type);
continue;
}
@@ -515,7 +533,7 @@
case SIGUSR1:
for (cnt=1; cnt<IPACM_EVENT_MAX; cnt++)
{
- printf("Event[%d:%30s]: %d\n",
+ printf("Event[%d:%30s]: %d\n",
cnt, ipacm_event_name[cnt-1], ipacm_event_stats[cnt]);
}
break;
@@ -536,7 +554,7 @@
void RegisterForSignals(void)
{
-
+
signal(SIGUSR1, IPACM_Sig_Handler);
signal(SIGUSR2, IPACM_Sig_Handler);
}
@@ -563,7 +581,7 @@
RegisterForSignals();
-
+
if (IPACM_SUCCESS == cmd_queue_thread)
{
ret = pthread_create(&cmd_queue_thread, NULL, MessageQueue::Process, NULL);
@@ -668,6 +686,7 @@
if ( fp == NULL )
{
IPACMDBG("open pid file failed \n");
+ return;
}
else if (fgets(string, IPA_MAX_FILE_LEN, fp) != NULL)
{
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 54e5c82..032a11f 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -66,10 +66,13 @@
num_firewall_v4 = 0;
num_firewall_v6 = 0;
- wan_route_rule_v4_hdl = (uint32_t *)calloc(iface_query->num_tx_props, sizeof(uint32_t));
- wan_route_rule_v6_hdl = (uint32_t *)calloc(iface_query->num_tx_props, sizeof(uint32_t));
- wan_route_rule_v6_hdl_a5 = (uint32_t *)calloc(iface_query->num_tx_props, sizeof(uint32_t));
-
+ if(iface_query != NULL)
+ {
+ wan_route_rule_v4_hdl = (uint32_t *)calloc(iface_query->num_tx_props, sizeof(uint32_t));
+ wan_route_rule_v6_hdl = (uint32_t *)calloc(iface_query->num_tx_props, sizeof(uint32_t));
+ wan_route_rule_v6_hdl_a5 = (uint32_t *)calloc(iface_query->num_tx_props, sizeof(uint32_t));
+ IPACMDBG("IPACM->IPACM_Wan(%d) constructor: Tx:%d\n", ipa_if_num, iface_query->num_tx_props);
+ }
m_is_sta_mode = is_sta_mode;
active_v4 = false;
@@ -96,7 +99,6 @@
{
IPACMERR("Failed to open %s\n",IPA_DEVICE_NAME);
}
- IPACMDBG("IPACM->IPACM_Wan(%d) constructor: Tx:%d\n", ipa_if_num, iface_query->num_tx_props);
return;
}
@@ -906,12 +908,14 @@
memset(pHeaderDescriptor->hdr[0].name, 0,
sizeof(pHeaderDescriptor->hdr[0].name));
- sprintf(index, "%d", ipa_if_num);
- strncpy(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
-
- strncat(pHeaderDescriptor->hdr[0].name,
- IPA_WAN_PARTIAL_HDR_NAME_v4,
- sizeof(IPA_WAN_PARTIAL_HDR_NAME_v4));
+ snprintf(index,sizeof(index), "%d", ipa_if_num);
+ strlcpy(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name));
+ if ( strlcat(pHeaderDescriptor->hdr[0].name, IPA_WAN_PARTIAL_HDR_NAME_v4, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeaderDescriptor->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeaderDescriptor->hdr[0].hdr_hdl = -1;
@@ -988,12 +992,14 @@
memset(pHeaderDescriptor->hdr[0].name, 0,
sizeof(pHeaderDescriptor->hdr[0].name));
- sprintf(index, "%d", ipa_if_num);
- strncpy(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
- strncat(pHeaderDescriptor->hdr[0].name,
- IPA_WAN_PARTIAL_HDR_NAME_v6,
- sizeof(IPA_WAN_PARTIAL_HDR_NAME_v6));
-
+ snprintf(index,sizeof(index), "%d", ipa_if_num);
+ strlcpy(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name));
+ if (strlcat(pHeaderDescriptor->hdr[0].name, IPA_WAN_PARTIAL_HDR_NAME_v6, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeaderDescriptor->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeaderDescriptor->hdr[0].hdr_hdl = -1;
pHeaderDescriptor->hdr[0].is_partial = 0;
@@ -2372,7 +2378,11 @@
ext_prop = (struct ipa_ioc_query_intf_ext_props *)
calloc(1, sizeof(struct ipa_ioc_query_intf_ext_props) +
iface_query->num_ext_props * sizeof(struct ipa_ioc_ext_intf_prop));
-
+ if(ext_prop == NULL)
+ {
+ IPACMERR("Unable to allocate memory.\n");
+ return IPACM_FAILURE;
+ }
memcpy(ext_prop->name, dev_name,
sizeof(dev_name));
ext_prop->num_ext_props = iface_query->num_ext_props;
@@ -2710,6 +2720,11 @@
if ((iptype == IPA_IP_v4) && (active_v4 == true))
{
+ if (num_firewall_v4 > IPACM_MAX_FIREWALL_ENTRIES)
+ {
+ IPACMERR("the number of v4 firewall entries overflow, aborting...\n");
+ return IPACM_FAILURE;
+ }
if (num_firewall_v4 != 0)
{
if (m_filtering.DeleteFilteringHdls(firewall_hdl_v4,
@@ -2737,6 +2752,11 @@
/* free v6 firewall filter rule */
if ((iptype == IPA_IP_v6) && (active_v6 == true))
{
+ if (num_firewall_v6 > IPACM_MAX_FIREWALL_ENTRIES)
+ {
+ IPACMERR("the number of v6 firewall entries overflow, aborting...\n");
+ return IPACM_FAILURE;
+ }
if (num_firewall_v6 != 0)
{
if (m_filtering.DeleteFilteringHdls(firewall_hdl_v6,
@@ -3259,6 +3279,11 @@
ipa_ioc_add_flt_rule *pFilteringTable_v6 = NULL;
mux_id = IPACM_Iface::ipacmcfg->GetQmapId();
+ if(rx_prop == NULL)
+ {
+ IPACMDBG("No rx properties registered for iface %s\n", dev_name);
+ return IPACM_SUCCESS;
+ }
if(IPACM_Wan::num_v4_flt_rule > 0)
{
diff --git a/ipacm/src/IPACM_Wlan.cpp b/ipacm/src/IPACM_Wlan.cpp
index 0d8b916..05f3674 100644
--- a/ipacm/src/IPACM_Wlan.cpp
+++ b/ipacm/src/IPACM_Wlan.cpp
@@ -83,14 +83,17 @@
num_wifi_client = 0;
header_name_count = 0;
- wlan_client_len = (sizeof(ipa_wlan_client)) + (iface_query->num_tx_props * sizeof(wlan_client_rt_hdl));
- wlan_client = (ipa_wlan_client *)calloc(IPA_MAX_NUM_WIFI_CLIENTS, wlan_client_len);
- if (wlan_client == NULL)
+ if(iface_query != NULL)
{
- IPACMERR("unable to allocate memory\n");
- return;
+ wlan_client_len = (sizeof(ipa_wlan_client)) + (iface_query->num_tx_props * sizeof(wlan_client_rt_hdl));
+ wlan_client = (ipa_wlan_client *)calloc(IPA_MAX_NUM_WIFI_CLIENTS, wlan_client_len);
+ if (wlan_client == NULL)
+ {
+ IPACMERR("unable to allocate memory\n");
+ return;
+ }
+ IPACMDBG("index:%d constructor: Tx properties:%d\n", iface_index, iface_query->num_tx_props);
}
-
Nat_App = NatApp::GetInstance();
if (Nat_App == NULL)
{
@@ -103,7 +106,6 @@
IPACMDBG("Now the number of wlan AP iface is %d\n", IPACM_Wlan::num_wlan_ap_iface);
add_dummy_flt_rule();
- IPACMDBG("index:%d constructor: Tx properties:%d\n", iface_index, iface_query->num_tx_props);
return;
}
@@ -522,6 +524,12 @@
IPACM_Iface::ipacmcfg->AddRmDepend(IPACM_Iface::ipacmcfg->ipa_client_rm_map_tbl[rx_prop->rx[0].src_pipe],false);
IPACMDBG("Add producer dependency from %s with registered rx-prop\n", dev_name);
}
+ else
+ {
+ /* Adding the check if no Rx property registered, no filter rules will be added */
+ IPACMDBG("No rx properties registered for iface %s\n", dev_name);
+ return IPACM_SUCCESS;
+ }
/* construct ipa_ioc_add_flt_rule with default filter rules */
if (iptype == IPA_IP_v4)
@@ -1122,15 +1130,23 @@
memset(pHeaderDescriptor->hdr[0].name, 0,
sizeof(pHeaderDescriptor->hdr[0].name));
- sprintf(index, "%d", ipa_if_num);
- strncpy(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", ipa_if_num);
+ strlcpy(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name));
- strncat(pHeaderDescriptor->hdr[0].name,
- IPA_WLAN_PARTIAL_HDR_NAME_v4,
- sizeof(IPA_WLAN_PARTIAL_HDR_NAME_v4));
+ if (strlcat(pHeaderDescriptor->hdr[0].name, IPA_WLAN_PARTIAL_HDR_NAME_v4, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
+ snprintf(index,sizeof(index), "%d", header_name_count);
+ if (strlcat(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
- sprintf(index, "%d", header_name_count);
- strncat(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
pHeaderDescriptor->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeaderDescriptor->hdr[0].hdr_hdl = -1;
@@ -1219,15 +1235,22 @@
memset(pHeaderDescriptor->hdr[0].name, 0,
sizeof(pHeaderDescriptor->hdr[0].name));
- sprintf(index, "%d", ipa_if_num);
- strncpy(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", ipa_if_num);
+ strlcpy(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name));
+ if (strlcat(pHeaderDescriptor->hdr[0].name, IPA_WLAN_PARTIAL_HDR_NAME_v6, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
- strncat(pHeaderDescriptor->hdr[0].name,
- IPA_WLAN_PARTIAL_HDR_NAME_v6,
- sizeof(IPA_WLAN_PARTIAL_HDR_NAME_v6));
-
- sprintf(index, "%d", header_name_count);
- strncat(pHeaderDescriptor->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", header_name_count);
+ if (strlcat(pHeaderDescriptor->hdr[0].name, index, sizeof(pHeaderDescriptor->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeaderDescriptor->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeaderDescriptor->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeaderDescriptor->hdr[0].hdr_hdl = -1;
@@ -1927,7 +1950,11 @@
fail:
/* Delete corresponding ipa_rm_resource_name of RX-endpoint after delete all IPV4V6 FT-rule */
+ if (rx_prop != NULL)
+ {
IPACM_Iface::ipacmcfg->DelRmDepend(IPACM_Iface::ipacmcfg->ipa_client_rm_map_tbl[rx_prop->rx[0].src_pipe]);
+ free(rx_prop);
+ }
for (i = 0; i < num_wifi_client; i++)
{
@@ -1938,10 +1965,7 @@
{
free(tx_prop);
}
- if (rx_prop != NULL)
- {
- free(rx_prop);
- }
+
if (iface_query != NULL)
{
free(iface_query);
@@ -2137,7 +2161,7 @@
pHeader->num_hdrs = 1;
memset(pHeader->hdr[0].name, 0, sizeof(pHeader->hdr[0].name));
- strncpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_WLAN_HDR_NAME_V4, sizeof(IPA_LAN_TO_LAN_WLAN_HDR_NAME_V4));
+ strlcpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_WLAN_HDR_NAME_V4, sizeof(pHeader->hdr[0].name));
for(j=0; j<MAX_OFFLOAD_PAIR; j++)
{
@@ -2154,8 +2178,14 @@
goto fail;
}
lan2lan_hdr_hdl_v4[j].valid = true;
- sprintf(index, "%d", j);
- strncat(pHeader->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", j);
+
+ if (strlcat(pHeader->hdr[0].name, index, sizeof(pHeader->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeader->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeader->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeader->hdr[0].is_partial = 0;
@@ -2248,7 +2278,8 @@
pHeader->num_hdrs = 1;
memset(pHeader->hdr[0].name, 0, sizeof(pHeader->hdr[0].name));
- strncpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_WLAN_HDR_NAME_V6, sizeof(IPA_LAN_TO_LAN_WLAN_HDR_NAME_V6));
+ strlcpy(pHeader->hdr[0].name, IPA_LAN_TO_LAN_WLAN_HDR_NAME_V6, sizeof(pHeader->hdr[0].name));
+
for(j=0; j<MAX_OFFLOAD_PAIR; j++)
{
@@ -2265,9 +2296,14 @@
goto fail;
}
lan2lan_hdr_hdl_v6[j].valid = true;
- sprintf(index, "%d", j);
- strncat(pHeader->hdr[0].name, index, sizeof(index));
+ snprintf(index,sizeof(index), "%d", j);
+ if (strlcat(pHeader->hdr[0].name, index, sizeof(pHeader->hdr[0].name)) > IPA_RESOURCE_NAME_MAX)
+ {
+ IPACMERR(" header name construction failed exceed length (%d)\n", strlen(pHeader->hdr[0].name));
+ res = IPACM_FAILURE;
+ goto fail;
+ }
pHeader->hdr[0].hdr_len = sCopyHeader.hdr_len;
pHeader->hdr[0].is_partial = 0;
pHeader->hdr[0].hdr_hdl = -1;
diff --git a/ipacm/src/IPACM_Xml.cpp b/ipacm/src/IPACM_Xml.cpp
index 44ebb2c..87a72cd 100644
--- a/ipacm/src/IPACM_Xml.cpp
+++ b/ipacm/src/IPACM_Xml.cpp
@@ -1,4 +1,4 @@
-/*
+/*
Copyright (c) 2013, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -133,14 +133,13 @@
/* parse the xml tree returned by libxml */
ret_val = ipacm_cfg_xml_parse_tree(root, config);
- if (ret_val != IPACM_SUCCESS)
+ if (ret_val != IPACM_SUCCESS)
{
IPACMDBG("IPACM_xml_parse: ipacm_cfg_xml_parse_tree returned parse error!\n");
}
/* Free up the libxml's parse tree */
xmlFreeDoc(doc);
- //xmlCleanupParser();
return ret_val;
}
@@ -157,7 +156,7 @@
char* content;
char content_buf[MAX_XML_STR_LEN];
- if (NULL == xml_node)
+ if (NULL == xml_node)
return ret_val;
while ( xml_node != NULL &&
@@ -261,7 +260,7 @@
{
config->iface_config.iface_entries[config->iface_config.num_iface_entries - 1].if_cat = ETH_IF;
IPACMDBG("Category %d\n", config->iface_config.iface_entries[config->iface_config.num_iface_entries - 1].if_cat);
- }
+ }
}
}
else if (IPACM_util_icmp_string((char*)xml_node->name,
@@ -273,11 +272,15 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
+ if(content_buf)
+ {
config->private_subnet_config.private_subnet_entries[config->private_subnet_config.num_subnet_entries - 1].subnet_addr
= ntohl(inet_addr(content_buf));
IPACMDBG("subnet_addr: %s \n", content_buf);
}
}
+ }
else if (IPACM_util_icmp_string((char*)xml_node->name,
SUBNETMASK_TAG) == 0)
{
@@ -287,11 +290,15 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
+ if(content_buf)
+ {
config->private_subnet_config.private_subnet_entries[config->private_subnet_config.num_subnet_entries - 1].subnet_mask
= ntohl(inet_addr(content_buf));
IPACMDBG("subnet_mask: %s \n", content_buf);
}
}
+ }
else if (IPACM_util_icmp_string((char*)xml_node->name,
Protocol_TAG) == 0)
{
@@ -301,6 +308,7 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
if (0 == strncasecmp(content_buf, TCP_PROTOCOL_TAG, str_size))
{
@@ -374,7 +382,7 @@
/* parse the xml tree returned by libxml*/
ret_val = IPACM_firewall_xml_parse_tree(root, config);
- if (ret_val != IPACM_SUCCESS)
+ if (ret_val != IPACM_SUCCESS)
{
IPACMDBG("IPACM_xml_parse: ipacm_firewall_xml_parse_tree returned parse error!\n");
}
@@ -402,7 +410,7 @@
IPACM_ASSERT(config != NULL);
- if (NULL == xml_node)
+ if (NULL == xml_node)
return ret_val;
while ( xml_node != NULL &&
@@ -448,16 +456,16 @@
memcpy(content_buf, (void *)content, str_size);
if (atoi(content_buf)==1)
{
- config->rule_action_accept = true;
+ config->rule_action_accept = true;
}
else
{
- config->rule_action_accept = false;
- }
- IPACMDBG(" Allow traffic which matches rules ?:%d\n",config->rule_action_accept);
+ config->rule_action_accept = false;
+ }
+ IPACMDBG(" Allow traffic which matches rules ?:%d\n",config->rule_action_accept);
}
}
-
+
if (0 == IPACM_util_icmp_string((char*)xml_node->name,
FirewallEnabled_TAG))
{
@@ -470,18 +478,15 @@
memcpy(content_buf, (void *)content, str_size);
if (atoi(content_buf)==1)
{
- config->firewall_enable = true;
+ config->firewall_enable = true;
}
else
{
- config->firewall_enable = false;
- }
- IPACMDBG(" Firewall Enable?:%d\n", config->firewall_enable);
- }
- }
-
-
-
+ config->firewall_enable = false;
+ }
+ IPACMDBG(" Firewall Enable?:%d\n", config->firewall_enable);
+ }
+ }
/* go to child */
ret_val = IPACM_firewall_xml_parse_tree(xml_node->children,
config);
@@ -519,11 +524,15 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
+ if (content_buf)
+ {
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.src_addr
= ntohl(inet_addr(content_buf));
IPACMDBG("IPv4 source address is: %s \n", content_buf);
}
}
+ }
else if (0 == IPACM_util_icmp_string((char*)xml_node->name,
IPV4SourceSubnetMask_TAG))
{
@@ -533,11 +542,15 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
+ if (content_buf)
+ {
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.src_addr_mask
= ntohl(inet_addr(content_buf));
IPACMDBG("IPv4 source subnet mask is: %s \n", content_buf);
}
}
+ }
else if (0 == IPACM_util_icmp_string((char*)xml_node->name,
IPV4DestinationAddress_TAG))
{
@@ -555,11 +568,15 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
+ if (content_buf)
+ {
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.dst_addr
= ntohl(inet_addr(content_buf));
IPACMDBG("IPv4 destination address is: %s \n", content_buf);
}
}
+ }
else if (0 == IPACM_util_icmp_string((char*)xml_node->name,
IPV4DestinationSubnetMask_TAG))
{
@@ -569,11 +586,15 @@
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
+ content_buf[MAX_XML_STR_LEN-1] = '\0';
+ if (content_buf > 0)
+ {
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.dst_addr_mask
= ntohl(inet_addr(content_buf));
IPACMDBG("IPv4 destination subnet mask is: %s \n", content_buf);
}
}
+ }
else if (0 == IPACM_util_icmp_string((char*)xml_node->name,
IPV4TypeOfService_TAG))
{
@@ -652,10 +673,10 @@
inet_pton(AF_INET6, content_buf, &ip6_addr);
memcpy(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr,
ip6_addr.s6_addr, IPACM_IPV6_ADDR_LEN * sizeof(uint8_t));
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[0]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[0]);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[1]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[1]);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[2]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[2]);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[3]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[3]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[0]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[0]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[1]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[1]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[2]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[2]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[3]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[3]);
IPACMDBG("\n ipv6 source addr is %d \n ",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.src_addr[0]);
@@ -709,10 +730,10 @@
inet_pton(AF_INET6, content_buf, &ip6_addr);
memcpy(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr,
ip6_addr.s6_addr, IPACM_IPV6_ADDR_LEN * sizeof(uint8_t));
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[0]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[0]);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[1]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[1]);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[2]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[2]);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[3]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[3]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[0]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[0]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[1]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[1]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[2]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[2]);
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[3]=ntohl(config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[3]);
IPACMDBG("\n ipv6 dest addr is %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v6.dst_addr[0]);
}
@@ -837,9 +858,9 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_lo
= config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port;
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_hi
- = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port + atoi(content_buf);
+ = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port + atoi(content_buf);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port
- = 0;
+ = 0;
IPACMDBG("\n tcp source port from %d to %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_lo,
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_hi);
@@ -849,8 +870,7 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.attrib_mask |= IPA_FLT_SRC_PORT;
IPACMDBG("\n tcp source port= %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port);
-
- }
+ }
}
}
else if (0 == IPACM_util_icmp_string((char*)xml_node->name,
@@ -888,9 +908,9 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_lo
= config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port;
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_hi
- = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port + atoi(content_buf);
+ = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port + atoi(content_buf);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port
- = 0;
+ = 0;
IPACMDBG("\n tcp dest port from %d to %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_lo,
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_hi);
@@ -938,9 +958,9 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_lo
= config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port;
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_hi
- = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port + atoi(content_buf);
+ = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port + atoi(content_buf);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port
- = 0;
+ = 0;
IPACMDBG("\n udp source port from %d to %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_lo,
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_hi);
@@ -989,9 +1009,9 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_lo
= config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port;
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_hi
- = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port + atoi(content_buf);
+ = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port + atoi(content_buf);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port
- = 0;
+ = 0;
IPACMDBG("\n UDP dest port from %d to %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_lo,
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_hi);
@@ -1085,9 +1105,9 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_lo
= config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port;
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_hi
- = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port + atoi(content_buf);
+ = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port + atoi(content_buf);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port
- = 0;
+ = 0;
IPACMDBG("\n tcp_udp source port from %d to %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_lo,
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.src_port_hi);
@@ -1135,9 +1155,9 @@
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_lo
= config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port;
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_hi
- = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port + atoi(content_buf);
+ = config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port + atoi(content_buf);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port
- = 0;
+ = 0;
IPACMDBG("\n tcp_udp dest port from %d to %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_lo,
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.dst_port_hi);