Merge "Fixed crashes found during Bring up"
diff --git a/ipacm/src/IPACM_ConntrackListener.cpp b/ipacm/src/IPACM_ConntrackListener.cpp
index 66a6355..391c20a 100644
--- a/ipacm/src/IPACM_ConntrackListener.cpp
+++ b/ipacm/src/IPACM_ConntrackListener.cpp
@@ -125,6 +125,7 @@
 				 if(0 != ret)
 				 {
 						IPACMERR("unable to create TCP conntrack event listner thread\n");
+						PERROR("unable to create TCP conntrack");
 						return -1;
 				 }
 
@@ -137,6 +138,7 @@
 				 if(0 != ret)
 				 {
 						IPACMERR("unable to create UDP conntrack event listner thread\n");
+						PERROR("unable to create UDP conntrack");
 						goto error;
 				 }
 
@@ -149,6 +151,7 @@
 				 if(0 != ret)
 				 {
 						IPACMERR("unable to create udp conn timeout thread\n");
+						PERROR("unable to create udp conn timeout");
 						goto error;
 				 }
 
diff --git a/ipacm/src/IPACM_EvtDispatcher.cpp b/ipacm/src/IPACM_EvtDispatcher.cpp
index 2d2909b..aa72dd6 100644
--- a/ipacm/src/IPACM_EvtDispatcher.cpp
+++ b/ipacm/src/IPACM_EvtDispatcher.cpp
@@ -127,6 +127,7 @@
 
 	if(data->evt_data != NULL)
 	{
+		IPACMDBG("free the event:%d data: %p\n", data->event, data->evt_data);
 		free(data->evt_data);
 	}
 	return;
diff --git a/ipacm/src/IPACM_Main.cpp b/ipacm/src/IPACM_Main.cpp
index 6369e10..446cd6a 100644
--- a/ipacm/src/IPACM_Main.cpp
+++ b/ipacm/src/IPACM_Main.cpp
@@ -173,7 +173,7 @@
 	struct ipa_wlan_msg *event = NULL;
 
 	ipacm_cmd_q_data evt_data;
-	ipacm_event_data_mac *data;
+	ipacm_event_data_mac *data = NULL;
 
 	fd = open(IPA_DRIVER, O_RDWR);
 	if (fd == 0)
@@ -185,6 +185,8 @@
 	{
 		IPACMDBG("Waiting for nofications from IPA driver \n");
 		memset(buffer, 0, sizeof(buffer));
+		memset(&evt_data, 0, sizeof(evt_data));
+		data = NULL;
 
 		length = read(fd, buffer, IPA_DRIVER_WLAN_BUF_LEN);
 		if (length < 0)
diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp
index d9a9098..de1bbfb 100644
--- a/ipacm/src/IPACM_Netlink.cpp
+++ b/ipacm/src/IPACM_Netlink.cpp
@@ -1518,10 +1518,10 @@
 								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
 								 sizeof(data_all->ipv6_addr));
 
-					data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
-					data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
-					data_addr->ipv6_addr[2] = ntohl(data_addr->ipv6_addr[2]);
-					data_addr->ipv6_addr[3] = ntohl(data_addr->ipv6_addr[3]);	
+					data_all->ipv6_addr[0] = ntohl(data_all->ipv6_addr[0]);
+					data_all->ipv6_addr[1] = ntohl(data_all->ipv6_addr[1]);
+					data_all->ipv6_addr[2] = ntohl(data_all->ipv6_addr[2]);
+					data_all->ipv6_addr[3] = ntohl(data_all->ipv6_addr[3]);	
 					data_all->iptype = IPA_IP_v6;
 				}
 				else
@@ -1602,13 +1602,14 @@
 									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 32)),
 									 (uint16_t)(ntohs(((uint64_t *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding)[1] >> 48)));
 
-					memcpy(data_all->ipv6_addr, msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
+					memcpy(data_all->ipv6_addr, 
+								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
 								 sizeof(data_all->ipv6_addr));
 
-					data_addr->ipv6_addr[0] = ntohl(data_addr->ipv6_addr[0]);
-					data_addr->ipv6_addr[1] = ntohl(data_addr->ipv6_addr[1]);
-					data_addr->ipv6_addr[2] = ntohl(data_addr->ipv6_addr[2]);
-					data_addr->ipv6_addr[3] = ntohl(data_addr->ipv6_addr[3]);	
+					data_all->ipv6_addr[0] = ntohl(data_all->ipv6_addr[0]);
+					data_all->ipv6_addr[1] = ntohl(data_all->ipv6_addr[1]);
+					data_all->ipv6_addr[2] = ntohl(data_all->ipv6_addr[2]);
+					data_all->ipv6_addr[3] = ntohl(data_all->ipv6_addr[3]);	
 					data_all->iptype = IPA_IP_v6;
 				}
 				else
@@ -1620,7 +1621,8 @@
 									 (unsigned char)(*(unsigned int *)&(msg_ptr->nl_neigh_info.attr_info.local_addr).__ss_padding >> 24));
 
 
-					memcpy(&data_all->ipv4_addr, msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
+					memcpy(&data_all->ipv4_addr, 
+								 msg_ptr->nl_neigh_info.attr_info.local_addr.__ss_padding,
 								 sizeof(data_all->ipv4_addr));
 					data_all->iptype = IPA_IP_v4;
 				}