diff --git a/ecm_classifier_pcc.c b/ecm_classifier_pcc.c
index de27104..9af9ecc 100644
--- a/ecm_classifier_pcc.c
+++ b/ecm_classifier_pcc.c
@@ -217,21 +217,13 @@
 	ECM_NIN4_ADDR_TO_IP_ADDR(ecm_src_ip, src_ip);
 	ECM_NIN4_ADDR_TO_IP_ADDR(ecm_dest_ip, dest_ip);
 
-	{
-		char src_ip_str[40];
-		char dest_ip_str[40];
-
-		ecm_ip_addr_to_string(src_ip_str, ecm_src_ip);
-		ecm_ip_addr_to_string(dest_ip_str, ecm_dest_ip);
-
-		DEBUG_INFO("Permit Accel v4, lookup connection using \n"
-				"Protocol: %d\n"
-				"src: %s:%d\n"
-				"dest: %s:%d\n",
-				protocol,
-				src_ip_str, src_port,
-				dest_ip_str, dest_port);
-	}
+	DEBUG_INFO("Permit Accel v4, lookup connection using \n"
+			"Protocol: %d\n"
+			"src: " ECM_IP_ADDR_DOT_FMT ":%d\n"
+			"dest: " ECM_IP_ADDR_DOT_FMT ":%d\n",
+			protocol,
+			ECM_IP_ADDR_TO_DOT(ecm_src_ip), src_port,
+			ECM_IP_ADDR_TO_DOT(ecm_dest_ip), dest_port);
 
 	ci = ecm_db_connection_find_and_ref(ecm_src_ip, ecm_dest_ip, protocol, src_port, dest_port);
 	if (!ci) {
@@ -296,21 +288,13 @@
 	in6 = *dest_ip;
 	ECM_NIN6_ADDR_TO_IP_ADDR(ecm_dest_ip, in6);
 
-	{
-		char src_ip_str[40];
-		char dest_ip_str[40];
-
-		ecm_ip_addr_to_string(src_ip_str, ecm_src_ip);
-		ecm_ip_addr_to_string(dest_ip_str, ecm_dest_ip);
-
-		DEBUG_INFO("Permit Accel v6, lookup connection using \n"
-				"Protocol: %d\n"
-				"src: %s:%d\n"
-				"dest: %s:%d\n",
-				protocol,
-				src_ip_str, src_port,
-				dest_ip_str, dest_port);
-	}
+	DEBUG_INFO("Permit Accel v6, lookup connection using \n"
+			"Protocol: %d\n"
+			"src: " ECM_IP_ADDR_OCTAL_FMT ":%d\n"
+			"dest: " ECM_IP_ADDR_OCTAL_FMT ":%d\n",
+			protocol,
+			ECM_IP_ADDR_TO_OCTAL(ecm_src_ip), src_port,
+			ECM_IP_ADDR_TO_OCTAL(ecm_dest_ip), dest_port);
 
 	ci = ecm_db_connection_find_and_ref(ecm_src_ip, ecm_dest_ip, protocol, src_port, dest_port);
 	if (!ci) {
@@ -369,21 +353,13 @@
 	ECM_NIN4_ADDR_TO_IP_ADDR(ecm_src_ip, src_ip);
 	ECM_NIN4_ADDR_TO_IP_ADDR(ecm_dest_ip, dest_ip);
 
-	{
-		char src_ip_str[40];
-		char dest_ip_str[40];
-
-		ecm_ip_addr_to_string(src_ip_str, ecm_src_ip);
-		ecm_ip_addr_to_string(dest_ip_str, ecm_dest_ip);
-
-		DEBUG_INFO("Deny Accel v4, lookup connection using \n"
-				"Protocol: %d\n"
-				"src: %s:%d\n"
-				"dest: %s:%d\n",
-				protocol,
-				src_ip_str, src_port,
-				dest_ip_str, dest_port);
-	}
+	DEBUG_INFO("Deny Accel v4, lookup connection using \n"
+			"Protocol: %d\n"
+			"src: " ECM_IP_ADDR_DOT_FMT ":%d\n"
+			"dest: " ECM_IP_ADDR_DOT_FMT ":%d\n",
+			protocol,
+			ECM_IP_ADDR_TO_DOT(ecm_src_ip), src_port,
+			ECM_IP_ADDR_TO_DOT(ecm_dest_ip), dest_port);
 
 	ci = ecm_db_connection_find_and_ref(ecm_src_ip, ecm_dest_ip, protocol, src_port, dest_port);
 	if (!ci) {
@@ -455,21 +431,13 @@
 	in6 = *dest_ip;
 	ECM_NIN6_ADDR_TO_IP_ADDR(ecm_dest_ip, in6);
 
-	{
-		char src_ip_str[40];
-		char dest_ip_str[40];
-
-		ecm_ip_addr_to_string(src_ip_str, ecm_src_ip);
-		ecm_ip_addr_to_string(dest_ip_str, ecm_dest_ip);
-
-		DEBUG_INFO("Deny Accel v6, lookup connection using \n"
-				"Protocol: %d\n"
-				"src: %s:%d\n"
-				"dest: %s:%d\n",
-				protocol,
-				src_ip_str, src_port,
-				dest_ip_str, dest_port);
-	}
+	DEBUG_INFO("Deny Accel v6, lookup connection using \n"
+			"Protocol: %d\n"
+			"src: " ECM_IP_ADDR_OCTAL_FMT ":%d\n"
+			"dest: " ECM_IP_ADDR_OCTAL_FMT ":%d\n",
+			protocol,
+			ECM_IP_ADDR_TO_OCTAL(ecm_src_ip), src_port,
+			ECM_IP_ADDR_TO_OCTAL(ecm_dest_ip), dest_port);
 
 	ci = ecm_db_connection_find_and_ref(ecm_src_ip, ecm_dest_ip, protocol, src_port, dest_port);
 	if (!ci) {
diff --git a/ecm_db.c b/ecm_db.c
index 516b98e..6b3e940 100644
--- a/ecm_db.c
+++ b/ecm_db.c
@@ -8159,16 +8159,16 @@
 	long int expires_in;
 	int sport;
 	int sport_nat;
-	char snode_address[25];
-	char snode_address_nat[25];
-	char sip_address[50];
-	char sip_address_nat[50];
-	char dnode_address[25];
-	char dnode_address_nat[25];
+	char snode_address[ECM_MAC_ADDR_STR_BUFF_SIZE];
+	char snode_address_nat[ECM_MAC_ADDR_STR_BUFF_SIZE];
+	char sip_address[ECM_IP_ADDR_STR_BUFF_SIZE];
+	char sip_address_nat[ECM_IP_ADDR_STR_BUFF_SIZE];
+	char dnode_address[ECM_MAC_ADDR_STR_BUFF_SIZE];
+	char dnode_address_nat[ECM_MAC_ADDR_STR_BUFF_SIZE];
 	int dport;
 	int dport_nat;
-	char dip_address[50];
-	char dip_address_nat[50];
+	char dip_address[ECM_IP_ADDR_STR_BUFF_SIZE];
+	char dip_address_nat[ECM_IP_ADDR_STR_BUFF_SIZE];
 	ecm_db_direction_t direction;
 	int ip_version;
 	int protocol;
@@ -8236,22 +8236,22 @@
 	hi = ci->mapping_to->host;
 	ecm_ip_addr_to_string(dip_address, hi->address);
 	ni = ci->to_node;
-	sprintf(dnode_address, "%pM", ni->address);
+	snprintf(dnode_address, sizeof(dnode_address), "%pM", ni->address);
 	hi = ci->mapping_nat_to->host;
 	ecm_ip_addr_to_string(dip_address_nat, hi->address);
 
 	hi = ci->mapping_from->host;
 	ecm_ip_addr_to_string(sip_address, hi->address);
 	ni = ci->from_node;
-	sprintf(snode_address, "%pM", ni->address);
+	snprintf(snode_address, sizeof(snode_address), "%pM", ni->address);
 	hi = ci->mapping_nat_from->host;
 	ecm_ip_addr_to_string(sip_address_nat, hi->address);
 
 	ni = ci->to_nat_node;
-	sprintf(dnode_address_nat, "%pM", ni->address);
+	snprintf(dnode_address_nat, sizeof(dnode_address_nat), "%pM", ni->address);
 
 	ni = ci->from_nat_node;
-	sprintf(snode_address_nat, "%pM", ni->address);
+	snprintf(snode_address_nat, sizeof(snode_address_nat), "%pM", ni->address);
 
 	direction = ci->direction;
 	ip_version = ci->ip_version;
@@ -8517,7 +8517,7 @@
 {
 	int result;
 	int port;
-	char address[25];
+	char address[ECM_IP_ADDR_STR_BUFF_SIZE];
 	int tcp_from;
 	int tcp_to;
 	int udp_from;
@@ -8647,7 +8647,7 @@
 int ecm_db_host_state_get(struct ecm_state_file_instance *sfi, struct ecm_db_host_instance *hi)
 {
 	int result;
-	char address[50];
+	char address[ECM_IP_ADDR_STR_BUFF_SIZE];
 #ifdef ECM_DB_XREF_ENABLE
 	int mapping_count;
 #endif
@@ -8724,7 +8724,7 @@
 int ecm_db_node_state_get(struct ecm_state_file_instance *sfi, struct ecm_db_node_instance *ni)
 {
 	int result;
-	char address[25];
+	char address[ECM_MAC_ADDR_STR_BUFF_SIZE];
 #ifdef ECM_DB_XREF_ENABLE
 	int from_connections_count;
 	int to_connections_count;
@@ -8760,7 +8760,7 @@
 	spin_unlock_bh(&ecm_db_lock);
 #endif
 	time_added = ni->time_added;
-	sprintf(address, "%pM", ni->address);
+	snprintf(address, sizeof(address), "%pM", ni->address);
 
 #ifdef ECM_DB_ADVANCED_STATS_ENABLE
 	ecm_db_node_data_stats_get(ni, &from_data_total, &to_data_total,
diff --git a/ecm_interface.c b/ecm_interface.c
index e3d5247..adb322f 100644
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -874,14 +874,9 @@
 	struct in6_addr mc_dst_addr;
 	struct rt6_info *rt6i;
 	struct neighbour *neigh;
-	ip_addr_t ecm_mc_dst_addr, ecm_src_addr;
 	struct net *netf = dev_net(dev);
 	int ret;
 
-	char __attribute__((unused)) dst_addr_str[ECM_IP_ADDR_STRING_BUFFER_SIZE];
-	char __attribute__((unused)) mc_dst_addr_str[ECM_IP_ADDR_STRING_BUFFER_SIZE];
-	char __attribute__((unused)) src_addr_str[ECM_IP_ADDR_STRING_BUFFER_SIZE];
-
 	/*
 	 * Find source and destination addresses in Linux format. We need
 	 * mcast destination address as well.
@@ -891,20 +886,11 @@
 	ret = ipv6_dev_get_saddr(netf, dev, &dst_addr, 0, &src_addr);
 
 	/*
-	 * IP address in string format for debug
-	 */
-	ecm_ip_addr_to_string(dst_addr_str, addr);
-	ECM_NIN6_ADDR_TO_IP_ADDR(ecm_mc_dst_addr, mc_dst_addr);
-	ecm_ip_addr_to_string(mc_dst_addr_str, ecm_mc_dst_addr);
-	ECM_NIN6_ADDR_TO_IP_ADDR(ecm_src_addr, src_addr);
-	ecm_ip_addr_to_string(src_addr_str, ecm_src_addr);
-
-	/*
 	 * Find the route entry
 	 */
 	rt6i = rt6_lookup(netf, &dst_addr, NULL, 0, 0);
 	if (!rt6i) {
-		DEBUG_TRACE("IPv6 Route lookup failure for destination IPv6 address %s\n", dst_addr_str);
+		DEBUG_TRACE("IPv6 Route lookup failure for destination IPv6 address " ECM_IP_ADDR_OCTAL_FMT "\n", ECM_IP_ADDR_TO_OCTAL(addr));
 		return;
 	}
 
@@ -917,7 +903,7 @@
 	neigh = rt6i->dst.ops->neigh_lookup(&rt6i->dst, NULL, &dst_addr);
 #endif
 	if (neigh == NULL) {
-		DEBUG_TRACE("Neighbour lookup failure for destination IPv6 address %s\n", dst_addr_str);
+		DEBUG_TRACE("Neighbour lookup failure for destination IPv6 address " ECM_IP_ADDR_OCTAL_FMT "\n", ECM_IP_ADDR_TO_OCTAL(addr));
 		dst_release(&rt6i->dst);
 		return;
 	}
diff --git a/ecm_types.h b/ecm_types.h
index 44c0c26..97b1435 100644
--- a/ecm_types.h
+++ b/ecm_types.h
@@ -44,7 +44,9 @@
 
 #define ECM_IP_ADDR_NULL {0, 0, 0, 0}
 
-#define ECM_IP_ADDR_STRING_BUFFER_SIZE 40
+#define ECM_MAC_ADDR_STR_BUFF_SIZE		18	/* This is the size of a string in the format of aa:bb:cc:dd:ee:ff */
+#define ECM_IP_ADDR_STR_BUFF_SIZE		40	/* This is the size of a string in the format of aaaa:bbbb:cccc:0000:1111:dddd:eeee:ffff */
+#define ECM_IP_ADDR_DOT_FMT_STR_BUFF_SIZE	16	/* This is the size of a string in the format of 192.168.100.200 */
 
 /*
  * Type checking functions for various forms of IP address
@@ -344,12 +346,12 @@
 {
 #ifdef ECM_IPV6_ENABLE
 	if (!ECM_IP_ADDR_IS_V4(a)) {
-		sprintf(str, ECM_IP_ADDR_OCTAL_FMT, ECM_IP_ADDR_TO_OCTAL(a));
+		snprintf(str, ECM_IP_ADDR_STR_BUFF_SIZE, ECM_IP_ADDR_OCTAL_FMT, ECM_IP_ADDR_TO_OCTAL(a));
 		return;
 	}
 #endif
 
-	sprintf(str, ECM_IP_ADDR_DOT_FMT, ECM_IP_ADDR_TO_DOT(a));
+	snprintf(str, ECM_IP_ADDR_DOT_FMT_STR_BUFF_SIZE, ECM_IP_ADDR_DOT_FMT, ECM_IP_ADDR_TO_DOT(a));
 }
 
 /*
