Jaromir Capik fce37a1
diff -Naur sipcalc-1.1.5.orig/include/sub.h sipcalc-1.1.5/include/sub.h
Jaromir Capik fce37a1
--- sipcalc-1.1.5.orig/include/sub.h	2005-11-02 10:27:04.000000000 +0100
Jaromir Capik fce37a1
+++ sipcalc-1.1.5/include/sub.h	2012-01-24 18:42:05.979999552 +0100
Jaromir Capik fce37a1
@@ -75,6 +75,12 @@
Jaromir Capik fce37a1
 #define V6ADDR_VAL "0123456789ABCDEFabcdef:"
Jaromir Capik fce37a1
 #define NETMASK_VAL "0123456789"
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
+#define TERMINATE(x) (x[sizeof(x)-1]='\0')
Jaromir Capik fce37a1
+#define safe_strncpy(dest,src) strncpy(dest,src,sizeof(dest)-1+TERMINATE(dest)*0)
Jaromir Capik fce37a1
+#define safe_strncat(dest,src) strncat(dest,src,sizeof(dest)-1+TERMINATE(dest)*0)
Jaromir Capik fce37a1
+#define safe_snprintf(dest,whatever...) snprintf(dest,sizeof(dest),## whatever)
Jaromir Capik fce37a1
+#define safe_bzero(dest) bzero((char *)dest,sizeof(dest))
Jaromir Capik fce37a1
+
Jaromir Capik fce37a1
 /*
Jaromir Capik fce37a1
  * Easier to define this ourselves then to use all the different
Jaromir Capik fce37a1
  * versions from different platforms.
Jaromir Capik fce37a1
diff -Naur sipcalc-1.1.5.orig/src/interface.c sipcalc-1.1.5/src/interface.c
Jaromir Capik fce37a1
--- sipcalc-1.1.5.orig/src/interface.c	2003-03-19 13:28:15.000000000 +0100
Jaromir Capik fce37a1
+++ sipcalc-1.1.5/src/interface.c	2012-01-24 19:05:01.453000525 +0100
Jaromir Capik fce37a1
@@ -60,10 +60,10 @@
Jaromir Capik fce37a1
 	n_if = ifarg_cur->next;
Jaromir Capik fce37a1
 	n_if->next = NULL;
Jaromir Capik fce37a1
 	bzero ((char *) n_if->name, IFNAMSIZ + 1);
Jaromir Capik fce37a1
-	bzero ((char *) n_if->p_v4addr, 19);
Jaromir Capik fce37a1
-	bzero ((char *) n_if->p_v4nmask, 16);
Jaromir Capik fce37a1
-	bzero ((char *) n_if->errorstr, 64);
Jaromir Capik fce37a1
-	bzero ((char *) n_if->cmdstr, 128);
Jaromir Capik fce37a1
+	safe_bzero (n_if->p_v4addr);
Jaromir Capik fce37a1
+	safe_bzero (n_if->p_v4nmask);
Jaromir Capik fce37a1
+	safe_bzero (n_if->errorstr);
Jaromir Capik fce37a1
+	safe_bzero (n_if->cmdstr);
Jaromir Capik fce37a1
 	n_if->type = 0;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	return n_if;
Jaromir Capik fce37a1
diff -Naur sipcalc-1.1.5.orig/src/sub.c sipcalc-1.1.5/src/sub.c
Jaromir Capik fce37a1
--- sipcalc-1.1.5.orig/src/sub.c	2009-07-20 22:33:18.000000000 +0200
Jaromir Capik fce37a1
+++ sipcalc-1.1.5/src/sub.c	2012-01-24 19:09:15.453000027 +0100
Jaromir Capik fce37a1
@@ -194,26 +194,26 @@
Jaromir Capik fce37a1
 	char buf[2], sbuf[128], dbuf[128], *arg1, *arg2;
Jaromir Capik fce37a1
 	int x, y, z, argmax;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) buf, 2);
Jaromir Capik fce37a1
+	safe_bzero (buf);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	argmax = (IFNAMSIZ + 1 > 19) ? IFNAMSIZ + 1 : 19;
Jaromir Capik fce37a1
 	arg1 = (char *) malloc (argmax);
Jaromir Capik fce37a1
 	arg2 = (char *) malloc (16);
Jaromir Capik fce37a1
 	bzero ((char *) arg1, argmax);
Jaromir Capik fce37a1
 	bzero ((char *) arg2, 16);
Jaromir Capik fce37a1
-	bzero ((char *) sbuf, 128);
Jaromir Capik fce37a1
-	bzero ((char *) dbuf, 128);
Jaromir Capik fce37a1
+	safe_bzero (sbuf);
Jaromir Capik fce37a1
+	safe_bzero (dbuf);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	while (!sbuf[0]) {
Jaromir Capik fce37a1
 		x = 0;
Jaromir Capik fce37a1
 		y = 0;
Jaromir Capik fce37a1
-		bzero ((char *) sbuf, 128);
Jaromir Capik fce37a1
+		safe_bzero (sbuf);
Jaromir Capik fce37a1
 		do {
Jaromir Capik fce37a1
 			x = read (0, buf, 1);
Jaromir Capik fce37a1
 			if (x == 1)
Jaromir Capik fce37a1
 				sbuf[y] = buf[0];
Jaromir Capik fce37a1
 			y++;
Jaromir Capik fce37a1
-		} while (x > 0 && buf[0] != '\n' && y < 127);
Jaromir Capik fce37a1
+		} while (x > 0 && buf[0] != '\n' && y < (sizeof(sbuf)-1));
Jaromir Capik fce37a1
 		if (x < 0) {
Jaromir Capik fce37a1
 			free (arg1);
Jaromir Capik fce37a1
 			free (arg2);
Jaromir Capik fce37a1
@@ -272,7 +272,7 @@
Jaromir Capik fce37a1
 {
Jaromir Capik fce37a1
 	abox->next = (struct argbox *) malloc (sizeof (struct argbox));
Jaromir Capik fce37a1
 	abox = abox->next;
Jaromir Capik fce37a1
-	bzero ((char *) abox, 128);
Jaromir Capik fce37a1
+	safe_bzero (abox->str);
Jaromir Capik fce37a1
 	abox->type = 0;
Jaromir Capik fce37a1
 	abox->resolv = 0;
Jaromir Capik fce37a1
 	abox->next = NULL;
Jaromir Capik fce37a1
@@ -313,14 +313,13 @@
Jaromir Capik fce37a1
 	 * We use goto's here *gasp*.
Jaromir Capik fce37a1
 	 */
Jaromir Capik fce37a1
 	while (argv[argcount]) {
Jaromir Capik fce37a1
-		bzero ((char *) expaddr, 128);
Jaromir Capik fce37a1
-
Jaromir Capik fce37a1
-		strncpy (expaddr, argv[argcount], 127);
Jaromir Capik fce37a1
+		safe_bzero (expaddr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
+		safe_strncpy (expaddr, argv[argcount]);
Jaromir Capik fce37a1
 		/*
Jaromir Capik fce37a1
 		 * Baaad argument.
Jaromir Capik fce37a1
 		 */
Jaromir Capik fce37a1
-		if (strlen (argv[argcount]) > 127) {
Jaromir Capik fce37a1
+		if (strlen (argv[argcount]) > sizeof(expaddr)-1) {
Jaromir Capik fce37a1
 			printf ("-[ERR : INVALID ARG - %s]\n", expaddr);
Jaromir Capik fce37a1
 			error = 1;
Jaromir Capik fce37a1
 			goto complete;
Jaromir Capik fce37a1
@@ -331,7 +330,7 @@
Jaromir Capik fce37a1
 		 */
Jaromir Capik fce37a1
 		x = validate_v6addr (expaddr);
Jaromir Capik fce37a1
 		if (x) {
Jaromir Capik fce37a1
-			strncpy (abox_cur->str, expaddr, 127);
Jaromir Capik fce37a1
+			safe_strncpy (abox_cur->str, expaddr);
Jaromir Capik fce37a1
 			abox_cur->type = AT_V6;
Jaromir Capik fce37a1
 			abox_cur->resolv = 0;
Jaromir Capik fce37a1
 			abox_cur = new_arg (abox_cur);
Jaromir Capik fce37a1
@@ -347,7 +346,7 @@
Jaromir Capik fce37a1
 		 */
Jaromir Capik fce37a1
 		x = validate_netmask (expaddr);
Jaromir Capik fce37a1
 		if (x == 2) {
Jaromir Capik fce37a1
-			strncpy (abox_cur->str, expaddr, 127);
Jaromir Capik fce37a1
+			safe_strncpy (abox_cur->str, expaddr);
Jaromir Capik fce37a1
 			abox_cur->type = AT_V4;
Jaromir Capik fce37a1
 			abox_cur->resolv = 0;
Jaromir Capik fce37a1
 			abox_cur = new_arg (abox_cur);
Jaromir Capik fce37a1
@@ -386,17 +385,17 @@
Jaromir Capik fce37a1
 		if (argcount + 1 < argc)
Jaromir Capik fce37a1
 			y = validate_netmask (argv[argcount + 1]);
Jaromir Capik fce37a1
 		if (y == 1 || y == 3) {
Jaromir Capik fce37a1
-			snprintf (abox_cur->str, 127, "%s %s", expaddr, argv[argcount + 1]);
Jaromir Capik fce37a1
+			safe_snprintf (abox_cur->str, "%s %s", expaddr, argv[argcount + 1]);
Jaromir Capik fce37a1
 			argcount++;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		else
Jaromir Capik fce37a1
-			strncpy (abox_cur->str, expaddr, 127);
Jaromir Capik fce37a1
+			safe_strncpy (abox_cur->str, expaddr);
Jaromir Capik fce37a1
 		abox_cur->type = AT_UNKWN;
Jaromir Capik fce37a1
 		abox_cur->resolv = 1;
Jaromir Capik fce37a1
 		abox_cur = new_arg (abox_cur);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 complete:
Jaromir Capik fce37a1
-		bzero ((char *) expaddr, 128);
Jaromir Capik fce37a1
+		safe_bzero (expaddr);
Jaromir Capik fce37a1
 		argcount++;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -428,8 +427,8 @@
Jaromir Capik fce37a1
 	    (struct if_info *) malloc (sizeof (struct if_info));
Jaromir Capik fce37a1
 	ifarg_cur->next = NULL;
Jaromir Capik fce37a1
 	bzero ((char *) ifarg_cur->name, IFNAMSIZ);
Jaromir Capik fce37a1
-	bzero ((char *) ifarg_cur->p_v4addr, 19);
Jaromir Capik fce37a1
-	bzero ((char *) ifarg_cur->p_v4nmask, 16);
Jaromir Capik fce37a1
+	safe_bzero (ifarg_cur->p_v4addr);
Jaromir Capik fce37a1
+	safe_bzero (ifarg_cur->p_v4nmask);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	while (abox) {
Jaromir Capik fce37a1
 		if (abox->type == AT_V4 && !abox->resolv) {
Jaromir Capik fce37a1
@@ -449,19 +448,19 @@
Jaromir Capik fce37a1
 				x++;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 			ifarg_cur->type = IFT_V4;
Jaromir Capik fce37a1
-			strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+			safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 		if (abox->type == AT_V4 && abox->resolv) {
Jaromir Capik fce37a1
 			d_resp_start = d_resp_cur = (struct dnsresp *) malloc (sizeof (struct dnsresp));
Jaromir Capik fce37a1
 			d_resp_start->next = NULL;
Jaromir Capik fce37a1
-			bzero((char *) d_resp_start->str, 128);
Jaromir Capik fce37a1
+			safe_bzero(d_resp_start->str);
Jaromir Capik fce37a1
 			d_resp_start->type = 0;
Jaromir Capik fce37a1
 			tmpstr = resolve_addr (abox->str, PF_INET, d_resp_cur);
Jaromir Capik fce37a1
 			if (tmpstr) {
Jaromir Capik fce37a1
 				d_resp_cur = d_resp_start;
Jaromir Capik fce37a1
 				while (d_resp_cur) {
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 					tmpstr = strstr (d_resp_cur->str, " ");
Jaromir Capik fce37a1
 					if (tmpstr != NULL && (strlen (tmpstr) > 0)) {
Jaromir Capik fce37a1
 						tmpstr++;
Jaromir Capik fce37a1
@@ -484,8 +483,8 @@
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 			else {
Jaromir Capik fce37a1
-				strncpy (ifarg_cur->p_v4addr, abox->str, 18);
Jaromir Capik fce37a1
-				strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+				safe_strncpy (ifarg_cur->p_v4addr, abox->str);
Jaromir Capik fce37a1
+				safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 				ifarg_cur->type = IFT_V4;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -493,8 +492,8 @@
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 		if (abox->type == AT_V6 && !abox->resolv) {
Jaromir Capik fce37a1
-			strncpy (ifarg_cur->p_v6addr, abox->str, 43);
Jaromir Capik fce37a1
-			strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+			safe_strncpy (ifarg_cur->p_v6addr, abox->str);
Jaromir Capik fce37a1
+			safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 			mk_ipv6addr (&ifarg_cur->v6ad, ifarg_cur->p_v6addr);
Jaromir Capik fce37a1
 			ifarg_cur->type = IFT_V6;
Jaromir Capik fce37a1
@@ -503,14 +502,14 @@
Jaromir Capik fce37a1
 		if (abox->type == AT_V6 && abox->resolv) {
Jaromir Capik fce37a1
 			d_resp_start = d_resp_cur = (struct dnsresp *) malloc (sizeof (struct dnsresp));
Jaromir Capik fce37a1
 			d_resp_start->next = NULL;
Jaromir Capik fce37a1
-			bzero((char *) d_resp_start->str, 128);
Jaromir Capik fce37a1
+			safe_bzero(d_resp_start->str);
Jaromir Capik fce37a1
 			d_resp_start->type = 0;
Jaromir Capik fce37a1
 			tmpstr = resolve_addr (abox->str, PF_INET6, d_resp_cur);
Jaromir Capik fce37a1
 			if (tmpstr) {
Jaromir Capik fce37a1
 				d_resp_cur = d_resp_start;
Jaromir Capik fce37a1
 				while (d_resp_cur) {
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->p_v6addr, d_resp_cur->str, 43);
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->p_v6addr, d_resp_cur->str);
Jaromir Capik fce37a1
 					ifarg_cur->type = IFT_V6;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 					mk_ipv6addr (&ifarg_cur->v6ad, ifarg_cur->p_v6addr);
Jaromir Capik fce37a1
@@ -521,8 +520,8 @@
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 			else {
Jaromir Capik fce37a1
-				strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
-				strncpy (ifarg_cur->p_v6addr, abox->str, 43);
Jaromir Capik fce37a1
+				safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
+				safe_strncpy (ifarg_cur->p_v6addr, abox->str);
Jaromir Capik fce37a1
 				ifarg_cur->type = IFT_V6;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 				mk_ipv6addr (&ifarg_cur->v6ad, ifarg_cur->p_v6addr);
Jaromir Capik fce37a1
@@ -542,15 +541,15 @@
Jaromir Capik fce37a1
 					}
Jaromir Capik fce37a1
 					memcpy ((struct if_info *) ifarg_cur, (struct if_info *) if_cur, sizeof (struct if_info));
Jaromir Capik fce37a1
 					ifarg_cur->type = IFT_INTV4;
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 					if_found = 1;
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 				if_cur = if_cur->next;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 			if (!if_found) {
Jaromir Capik fce37a1
 				strncpy (ifarg_cur->name, abox->str, IFNAMSIZ);
Jaromir Capik fce37a1
-				strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
-				snprintf(ifarg_cur->errorstr, sizeof(ifarg_cur->errorstr), "Unable to retrieve interface information");
Jaromir Capik fce37a1
+				safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
+				safe_snprintf(ifarg_cur->errorstr, "Unable to retrieve interface information");
Jaromir Capik fce37a1
 				ifarg_cur->type = IFT_INTV4;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
@@ -566,15 +565,15 @@
Jaromir Capik fce37a1
 					}
Jaromir Capik fce37a1
 					memcpy ((struct if_info *) ifarg_cur, (struct if_info *) if_cur, sizeof (struct if_info));
Jaromir Capik fce37a1
 					ifarg_cur->type = IFT_INTV4;
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 					if_found = 1;
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 				if_cur = if_cur->next;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 			if (!if_found) {
Jaromir Capik fce37a1
 				strncpy (ifarg_cur->name, abox->str, IFNAMSIZ);
Jaromir Capik fce37a1
-				strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
-				snprintf(ifarg_cur->errorstr, sizeof(ifarg_cur->errorstr), "Unable to retrieve interface information");
Jaromir Capik fce37a1
+				safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
+				safe_snprintf(ifarg_cur->errorstr, "Unable to retrieve interface information");
Jaromir Capik fce37a1
 				ifarg_cur->type = IFT_INTV4;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
@@ -582,15 +581,15 @@
Jaromir Capik fce37a1
 		if (abox->type == AT_UNKWN && abox->resolv) {
Jaromir Capik fce37a1
 			d_resp_start = d_resp_cur = (struct dnsresp *) malloc (sizeof (struct dnsresp));
Jaromir Capik fce37a1
 			d_resp_start->next = NULL;
Jaromir Capik fce37a1
-			bzero((char *) d_resp_start->str, 128);
Jaromir Capik fce37a1
+			safe_bzero(d_resp_start->str);
Jaromir Capik fce37a1
 			d_resp_start->type = 0;
Jaromir Capik fce37a1
 			tmpstr = resolve_addr (abox->str, PF_UNSPEC, d_resp_cur);
Jaromir Capik fce37a1
 			if (tmpstr) {
Jaromir Capik fce37a1
 				d_resp_cur = d_resp_start;
Jaromir Capik fce37a1
 				while (d_resp_cur) {
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 					if (d_resp_cur->type == AF_INET6) {
Jaromir Capik fce37a1
-						strncpy (ifarg_cur->p_v6addr, d_resp_cur->str, 43);
Jaromir Capik fce37a1
+						safe_strncpy (ifarg_cur->p_v6addr, d_resp_cur->str);
Jaromir Capik fce37a1
 						ifarg_cur->type = IFT_V6;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 						mk_ipv6addr (&ifarg_cur->v6ad, ifarg_cur->p_v6addr);
Jaromir Capik fce37a1
@@ -631,14 +630,14 @@
Jaromir Capik fce37a1
 						}
Jaromir Capik fce37a1
 						memcpy ((struct if_info *) ifarg_cur, (struct if_info *) if_cur, sizeof (struct if_info));
Jaromir Capik fce37a1
 						ifarg_cur->type = IFT_INTV4;
Jaromir Capik fce37a1
-						strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
+						safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
 						if_found = 1;
Jaromir Capik fce37a1
 					}
Jaromir Capik fce37a1
 					if_cur = if_cur->next;
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 				if (!if_found) {
Jaromir Capik fce37a1
-					strncpy (ifarg_cur->cmdstr, abox->str, 127);
Jaromir Capik fce37a1
-					snprintf(ifarg_cur->errorstr, sizeof(ifarg_cur->errorstr), "Unparsable argument.");
Jaromir Capik fce37a1
+					safe_strncpy (ifarg_cur->cmdstr, abox->str);
Jaromir Capik fce37a1
+					safe_snprintf(ifarg_cur->errorstr, "Unparsable argument.");
Jaromir Capik fce37a1
 					ifarg_cur->type = IFT_UNKWN;
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -728,7 +727,7 @@
Jaromir Capik fce37a1
 	 * v[4,6]args.
Jaromir Capik fce37a1
 	 */
Jaromir Capik fce37a1
 	abox_start = abox_cur = (struct argbox *) malloc (sizeof (struct argbox));
Jaromir Capik fce37a1
-	bzero ((char *) abox_cur, 128);
Jaromir Capik fce37a1
+	safe_bzero (abox_cur->str);
Jaromir Capik fce37a1
 	abox_cur->type = 0;
Jaromir Capik fce37a1
 	abox_cur->resolv = 0;
Jaromir Capik fce37a1
 	abox_cur->next = NULL;
Jaromir Capik fce37a1
@@ -822,7 +821,7 @@
Jaromir Capik fce37a1
 			printf ("Try '%s -h' for more information.\n", NAME);
Jaromir Capik fce37a1
 			return 0;
Jaromir Capik fce37a1
 		case '4':
Jaromir Capik fce37a1
-			strncpy (abox_cur->str, optarg, 127);
Jaromir Capik fce37a1
+			safe_strncpy (abox_cur->str, optarg);
Jaromir Capik fce37a1
 			abox_cur->type = AT_V4;
Jaromir Capik fce37a1
 			abox_cur->resolv = 1;
Jaromir Capik fce37a1
 			if (validate_netmask (optarg) == 2)
Jaromir Capik fce37a1
@@ -833,7 +832,7 @@
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 			break;
Jaromir Capik fce37a1
 		case '6':
Jaromir Capik fce37a1
-			strncpy (abox_cur->str, optarg, 127);
Jaromir Capik fce37a1
+			safe_strncpy (abox_cur->str, optarg);
Jaromir Capik fce37a1
 			abox_cur->type = AT_V6;
Jaromir Capik fce37a1
 			abox_cur->resolv = 1;
Jaromir Capik fce37a1
 			if (validate_v6addr (expaddr) == 1)
Jaromir Capik fce37a1
@@ -842,7 +841,7 @@
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 			break;
Jaromir Capik fce37a1
 		case 'I':
Jaromir Capik fce37a1
-			strncpy (abox_cur->str, optarg, 127);
Jaromir Capik fce37a1
+			safe_strncpy (abox_cur->str, optarg);
Jaromir Capik fce37a1
 			abox_cur->type = AT_INT;
Jaromir Capik fce37a1
 			abox_cur->resolv = 0;
Jaromir Capik fce37a1
 			abox_cur = new_arg (abox_cur);
Jaromir Capik fce37a1
@@ -936,7 +935,7 @@
Jaromir Capik fce37a1
 	iffound = 0;
Jaromir Capik fce37a1
 	index = 0;
Jaromir Capik fce37a1
 	ifarg_cur = ifarg_start;
Jaromir Capik fce37a1
-	bzero ((char *) oldcmdstr, 128);
Jaromir Capik fce37a1
+	safe_bzero (oldcmdstr);
Jaromir Capik fce37a1
 	while (ifarg_cur && !parse_stdin) {
Jaromir Capik fce37a1
 		if (strlen (ifarg_cur->cmdstr) > 0) {
Jaromir Capik fce37a1
 			if (!strcmp (ifarg_cur->cmdstr, oldcmdstr))
Jaromir Capik fce37a1
@@ -948,7 +947,7 @@
Jaromir Capik fce37a1
 			index = 0;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		iffound += out_cmdline (ifarg_cur, v4args, m_argv4, v6args, m_argv6, 0, index);
Jaromir Capik fce37a1
-		strcpy (oldcmdstr, ifarg_cur->cmdstr);
Jaromir Capik fce37a1
+		safe_strncpy (oldcmdstr, ifarg_cur->cmdstr);
Jaromir Capik fce37a1
 		ifarg_cur = ifarg_cur->next;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -991,7 +990,7 @@
Jaromir Capik fce37a1
 				iffound = 0;
Jaromir Capik fce37a1
 				index = 0;
Jaromir Capik fce37a1
 				ifarg_cur = ifarg_start;
Jaromir Capik fce37a1
-				bzero ((char *) oldcmdstr, 128);
Jaromir Capik fce37a1
+				safe_bzero (oldcmdstr);
Jaromir Capik fce37a1
 				while (ifarg_cur) {
Jaromir Capik fce37a1
 					if (strlen (ifarg_cur->cmdstr) > 0) {
Jaromir Capik fce37a1
 						if (!strcmp (ifarg_cur->cmdstr, oldcmdstr))
Jaromir Capik fce37a1
@@ -1003,7 +1002,7 @@
Jaromir Capik fce37a1
 						index = 0;
Jaromir Capik fce37a1
 					}
Jaromir Capik fce37a1
 					iffound += out_cmdline (ifarg_cur, v4args, m_argv4, v6args, m_argv6, 0, index);
Jaromir Capik fce37a1
-					strcpy (oldcmdstr, ifarg_cur->cmdstr);
Jaromir Capik fce37a1
+					safe_strncpy (oldcmdstr, ifarg_cur->cmdstr);
Jaromir Capik fce37a1
 					ifarg_cur = ifarg_cur->next;
Jaromir Capik fce37a1
 				}
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
@@ -1012,7 +1011,7 @@
Jaromir Capik fce37a1
 			free_if (ifarg_start);
Jaromir Capik fce37a1
 			free_boxargs (abox_start);
Jaromir Capik fce37a1
 			abox_start = abox_cur = (struct argbox *) malloc (sizeof (struct argbox));
Jaromir Capik fce37a1
-			bzero ((char *) abox_cur, 128);
Jaromir Capik fce37a1
+			safe_bzero (abox_cur->str);
Jaromir Capik fce37a1
 			abox_cur->type = 0;
Jaromir Capik fce37a1
 			abox_cur->resolv = 0;
Jaromir Capik fce37a1
 			abox_cur->next = NULL;
Jaromir Capik fce37a1
diff -Naur sipcalc-1.1.5.orig/src/sub-func.c sipcalc-1.1.5/src/sub-func.c
Jaromir Capik fce37a1
--- sipcalc-1.1.5.orig/src/sub-func.c	2006-11-10 10:46:45.000000000 +0100
Jaromir Capik fce37a1
+++ sipcalc-1.1.5/src/sub-func.c	2012-01-24 19:02:51.245000309 +0100
Jaromir Capik fce37a1
@@ -115,7 +115,7 @@
Jaromir Capik fce37a1
 	y = 0;
Jaromir Capik fce37a1
 	for (x = 0; x < 4; x++) {
Jaromir Capik fce37a1
 		z = 0;
Jaromir Capik fce37a1
-		bzero ((char *) buf, 16);
Jaromir Capik fce37a1
+		safe_bzero (buf);
Jaromir Capik fce37a1
 		while (addr[y] != '.' && y < strlen (addr)) {
Jaromir Capik fce37a1
 			buf[z] = addr[y];
Jaromir Capik fce37a1
 			y++;
Jaromir Capik fce37a1
@@ -177,7 +177,7 @@
Jaromir Capik fce37a1
 	if (x == 1)
Jaromir Capik fce37a1
 		return 3;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) addr, 16);
Jaromir Capik fce37a1
+	safe_bzero (addr);
Jaromir Capik fce37a1
 	if (strstr (in_addr, "/")) {
Jaromir Capik fce37a1
 		x = 0;
Jaromir Capik fce37a1
 		while (in_addr[x] != '/' && x < 15) {
Jaromir Capik fce37a1
@@ -185,7 +185,7 @@
Jaromir Capik fce37a1
 			x++;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 	} else {
Jaromir Capik fce37a1
-		strncpy (addr, in_addr, 16);
Jaromir Capik fce37a1
+		safe_strncpy (addr, in_addr);
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	/*
Jaromir Capik fce37a1
@@ -311,7 +311,7 @@
Jaromir Capik fce37a1
 	if (!validate_v4addr (quad))
Jaromir Capik fce37a1
 		return -1;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) buf, 128);
Jaromir Capik fce37a1
+	safe_bzero (buf);
Jaromir Capik fce37a1
 	x = 0;
Jaromir Capik fce37a1
 	while (quad[x] != '.') {
Jaromir Capik fce37a1
 		buf[x] = quad[x];
Jaromir Capik fce37a1
@@ -324,7 +324,7 @@
Jaromir Capik fce37a1
 		if (z > 255 || z < 0)
Jaromir Capik fce37a1
 			return -1;
Jaromir Capik fce37a1
 		*num = *num | (z << (8 * (3 - y)));
Jaromir Capik fce37a1
-		bzero ((char *) buf, 128);
Jaromir Capik fce37a1
+		safe_bzero (buf);
Jaromir Capik fce37a1
 		z = 0;
Jaromir Capik fce37a1
 		while (quad[x] != '.' && quad[x] != '\0' && x < strlen (quad)) {
Jaromir Capik fce37a1
 			buf[z] = quad[x];
Jaromir Capik fce37a1
@@ -345,8 +345,8 @@
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	for (x = 0; x < 4; x++)
Jaromir Capik fce37a1
 		a[x] = num >> (8 * (3 - x)) & 0xff;
Jaromir Capik fce37a1
-	bzero ((char *) quad, 17);
Jaromir Capik fce37a1
-	snprintf (quad, 16, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]);
Jaromir Capik fce37a1
+	safe_bzero (quad);
Jaromir Capik fce37a1
+	safe_snprintf (quad, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	return quad;
Jaromir Capik fce37a1
 }
Jaromir Capik fce37a1
@@ -357,7 +357,7 @@
Jaromir Capik fce37a1
 	static char bitmap[36];
Jaromir Capik fce37a1
 	int x, y, z;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) bitmap, 36);
Jaromir Capik fce37a1
+	safe_bzero (bitmap);
Jaromir Capik fce37a1
 	y = 1;
Jaromir Capik fce37a1
 	z = 0;
Jaromir Capik fce37a1
 	for (x = 0; x < 32; x++) {
Jaromir Capik fce37a1
@@ -384,8 +384,8 @@
Jaromir Capik fce37a1
 	char *s_find;
Jaromir Capik fce37a1
 	int x, y, z;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) buf, 128);
Jaromir Capik fce37a1
-	bzero ((char *) buf2, 128);
Jaromir Capik fce37a1
+	safe_bzero (buf);
Jaromir Capik fce37a1
+	safe_bzero (buf2);
Jaromir Capik fce37a1
 	ifi->v4ad.n_nmaskbits = 0;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	/*
Jaromir Capik fce37a1
@@ -509,7 +509,7 @@
Jaromir Capik fce37a1
 	/*
Jaromir Capik fce37a1
 	 * network class, class remark and classfull netmask
Jaromir Capik fce37a1
 	 */
Jaromir Capik fce37a1
-	bzero ((char *) ifi->v4ad.class_remark, 64);
Jaromir Capik fce37a1
+	safe_bzero (ifi->v4ad.class_remark);
Jaromir Capik fce37a1
 	x = ifi->v4ad.n_haddr >> 24;
Jaromir Capik fce37a1
 	ifi->v4ad.n_cnaddr = 0;
Jaromir Capik fce37a1
 	if (!(x & 0x80)) {
Jaromir Capik fce37a1
@@ -526,18 +526,18 @@
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 	if ((x & 0xf0) == 0xe0) {
Jaromir Capik fce37a1
 		ifi->v4ad.class = 'D';
Jaromir Capik fce37a1
-		snprintf (ifi->v4ad.class_remark, 64, " (multicast network)");
Jaromir Capik fce37a1
+		safe_snprintf (ifi->v4ad.class_remark, " (multicast network)");
Jaromir Capik fce37a1
 		ifi->v4ad.n_cnmask = ifi->v4ad.n_nmask;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 	if ((x & 0xf8) == 0xf0) {
Jaromir Capik fce37a1
 		ifi->v4ad.class = 'E';
Jaromir Capik fce37a1
-		snprintf (ifi->v4ad.class_remark, 64,
Jaromir Capik fce37a1
+		safe_snprintf (ifi->v4ad.class_remark,
Jaromir Capik fce37a1
 			  " (reserved for future use)");
Jaromir Capik fce37a1
 		ifi->v4ad.n_cnmask = ifi->v4ad.n_nmask;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 	if (ifi->v4ad.class == '\0') {
Jaromir Capik fce37a1
 		ifi->v4ad.n_cnmask = ifi->v4ad.n_nmask;
Jaromir Capik fce37a1
-		snprintf (ifi->v4ad.class_remark, 64, "Nonexistant");
Jaromir Capik fce37a1
+		safe_snprintf (ifi->v4ad.class_remark, "Nonexistant");
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	/*
Jaromir Capik fce37a1
@@ -583,7 +583,7 @@
Jaromir Capik fce37a1
 	if (split && (count (addr, '/') == 1)) {
Jaromir Capik fce37a1
 		if (strlen (split) > 1 && strlen (split) < 5) {
Jaromir Capik fce37a1
 			split++;
Jaromir Capik fce37a1
-			strncpy (spstr->nmask, split, 3);
Jaromir Capik fce37a1
+			safe_strncpy (spstr->nmask, split);
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -776,7 +776,7 @@
Jaromir Capik fce37a1
 			y++;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-		bzero ((char *) str, 5);
Jaromir Capik fce37a1
+		safe_bzero (str);
Jaromir Capik fce37a1
 		x = 0;
Jaromir Capik fce37a1
 		while (y < strlen (addr) && addr[y] != ':') {
Jaromir Capik fce37a1
 			str[x] = addr[y];
Jaromir Capik fce37a1
@@ -786,7 +786,7 @@
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (compressed) {
Jaromir Capik fce37a1
-		bzero ((char *) str, 5);
Jaromir Capik fce37a1
+		safe_bzero (str);
Jaromir Capik fce37a1
 		if (pos <= cstart) {
Jaromir Capik fce37a1
 			x = 0;
Jaromir Capik fce37a1
 			y = 0;
Jaromir Capik fce37a1
@@ -824,7 +824,7 @@
Jaromir Capik fce37a1
 				y++;
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-			bzero ((char *) str, 5);
Jaromir Capik fce37a1
+			safe_bzero (str);
Jaromir Capik fce37a1
 			x = 0;
Jaromir Capik fce37a1
 			while (y < strlen (addr) && addr[y] != ':') {
Jaromir Capik fce37a1
 				str[x] = addr[y];
Jaromir Capik fce37a1
@@ -865,7 +865,7 @@
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (type == V6TYPE_V4INV6) {
Jaromir Capik fce37a1
-		bzero ((char *) buf, 128);
Jaromir Capik fce37a1
+		safe_bzero (buf);
Jaromir Capik fce37a1
 		x = 0;
Jaromir Capik fce37a1
 		while (spstr.ipv4addr[x] != '.') {
Jaromir Capik fce37a1
 			buf[x] = spstr.ipv4addr[x];
Jaromir Capik fce37a1
@@ -883,7 +883,7 @@
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
 			n = atoi (buf);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-			bzero ((char *) buf, 128);
Jaromir Capik fce37a1
+			safe_bzero (buf);
Jaromir Capik fce37a1
 			z = 0;
Jaromir Capik fce37a1
 			while (spstr.ipv4addr[x] != '.'
Jaromir Capik fce37a1
 			       && spstr.ipv4addr[x] != '\0'
Jaromir Capik fce37a1
@@ -937,9 +937,9 @@
Jaromir Capik fce37a1
 	int x;
Jaromir Capik fce37a1
 	struct ipv6_split spstr;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) spstr.ipv6addr, 40);
Jaromir Capik fce37a1
-	bzero ((char *) spstr.ipv4addr, 16);
Jaromir Capik fce37a1
-	bzero ((char *) spstr.nmask, 4);
Jaromir Capik fce37a1
+	safe_bzero (spstr.ipv6addr);
Jaromir Capik fce37a1
+	safe_bzero (spstr.ipv4addr);
Jaromir Capik fce37a1
+	safe_bzero (spstr.nmask);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	split_ipv6addr (addr, &spstr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -1011,29 +1011,29 @@
Jaromir Capik fce37a1
 	a = in6_addr->haddr.sip6_addr16[0];
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (a == 0)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63, "Reserved");
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark, "Reserved");
Jaromir Capik fce37a1
 	if (a == 2 || a == 3)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63,
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark,
Jaromir Capik fce37a1
 			  "Reserved for NSAP Allocation");
Jaromir Capik fce37a1
 	if (a == 4 || a == 5)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63,
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark,
Jaromir Capik fce37a1
 			  "Reserved for IPX Allocation");
Jaromir Capik fce37a1
 	if ((a & 0xe000) == 0x2000)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63,
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark,
Jaromir Capik fce37a1
 			  "Aggregatable Global Unicast Addresses");
Jaromir Capik fce37a1
 	if ((a | 0x00ff) == 0x00ff)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63, "Reserved");
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark, "Reserved");
Jaromir Capik fce37a1
 	if ((a & 0xff00) == 0xff00)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63, "Multicast Addresses");
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark, "Multicast Addresses");
Jaromir Capik fce37a1
 	if ((a & 0xff80) == 0xfe80)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63,
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark,
Jaromir Capik fce37a1
 			  "Link-Local Unicast Addresses");
Jaromir Capik fce37a1
 	if ((a & 0xffc0) == 0xfec0)
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63,
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark,
Jaromir Capik fce37a1
 			  "Site-Local Unicast Addresses");
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (in6_addr->class_remark[0] == '\0')
Jaromir Capik fce37a1
-		snprintf (in6_addr->class_remark, 63, "Unassigned");
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->class_remark, "Unassigned");
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	return;
Jaromir Capik fce37a1
 }
Jaromir Capik fce37a1
@@ -1049,7 +1049,7 @@
Jaromir Capik fce37a1
 			y = 1;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 	if (!y)
Jaromir Capik fce37a1
-		snprintf (in6_addr->comment, 63, "Unspecified");
Jaromir Capik fce37a1
+		safe_snprintf (in6_addr->comment, "Unspecified");
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	y = 0;
Jaromir Capik fce37a1
 	for (x = 0; x < 7; x++) {
Jaromir Capik fce37a1
@@ -1058,7 +1058,7 @@
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 	if (!y)
Jaromir Capik fce37a1
 		if (in6_addr->haddr.sip6_addr16[7] == 1)
Jaromir Capik fce37a1
-			snprintf (in6_addr->comment, 63, "Loopback");
Jaromir Capik fce37a1
+			safe_snprintf (in6_addr->comment, "Loopback");
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	return;
Jaromir Capik fce37a1
 }
Jaromir Capik fce37a1
@@ -1092,7 +1092,7 @@
Jaromir Capik fce37a1
 	int x, y, z;
Jaromir Capik fce37a1
 	int start, num;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) outad, 44);
Jaromir Capik fce37a1
+	safe_bzero (outad);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	start = -1;
Jaromir Capik fce37a1
 	num = 0;
Jaromir Capik fce37a1
@@ -1121,15 +1121,15 @@
Jaromir Capik fce37a1
 	for (x = 0; x < 8; x++) {
Jaromir Capik fce37a1
 		if (x == start) {
Jaromir Capik fce37a1
 			if (!x)
Jaromir Capik fce37a1
-				strcat (outad, ":");
Jaromir Capik fce37a1
-			strcat (outad, ":");
Jaromir Capik fce37a1
+				safe_strncat (outad, ":");
Jaromir Capik fce37a1
+			safe_strncat (outad, ":");
Jaromir Capik fce37a1
 			x += num - 1;
Jaromir Capik fce37a1
 		} else {
Jaromir Capik fce37a1
-			bzero ((char *) tmpad, 5);
Jaromir Capik fce37a1
-			sprintf (tmpad, "%x", addr.sip6_addr16[x]);
Jaromir Capik fce37a1
-			strcat (outad, tmpad);
Jaromir Capik fce37a1
+			safe_bzero (tmpad);
Jaromir Capik fce37a1
+			safe_snprintf (tmpad, "%x", addr.sip6_addr16[x]);
Jaromir Capik fce37a1
+			safe_strncat (outad, tmpad);
Jaromir Capik fce37a1
 			if (x != 7)
Jaromir Capik fce37a1
-				strcat (outad, ":");
Jaromir Capik fce37a1
+				safe_strncat (outad, ":");
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -1142,9 +1142,9 @@
Jaromir Capik fce37a1
 	int x, y, z;
Jaromir Capik fce37a1
 	struct ipv6_split spstr;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) spstr.ipv6addr, 40);
Jaromir Capik fce37a1
-	bzero ((char *) spstr.ipv4addr, 16);
Jaromir Capik fce37a1
-	bzero ((char *) spstr.nmask, 4);
Jaromir Capik fce37a1
+	safe_bzero (spstr.ipv6addr);
Jaromir Capik fce37a1
+	safe_bzero (spstr.ipv4addr);
Jaromir Capik fce37a1
+	safe_bzero (spstr.nmask);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	split_ipv6addr (addr, &spstr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -1195,9 +1195,9 @@
Jaromir Capik fce37a1
 	v6addrtobroadcast (in6_addr);
Jaromir Capik fce37a1
 	in6_addr->real_v4 = v6verifyv4 (in6_addr->haddr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) in6_addr->class_remark, 64);
Jaromir Capik fce37a1
+	safe_bzero (in6_addr->class_remark);
Jaromir Capik fce37a1
 	v6_type (in6_addr);
Jaromir Capik fce37a1
-	bzero ((char *) in6_addr->comment, 64);
Jaromir Capik fce37a1
+	safe_bzero (in6_addr->comment);
Jaromir Capik fce37a1
 	v6_comment (in6_addr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	return 0;
Jaromir Capik fce37a1
@@ -1209,7 +1209,7 @@
Jaromir Capik fce37a1
 	d_resp->next = (struct dnsresp *) malloc (sizeof (struct dnsresp));
Jaromir Capik fce37a1
 	d_resp = d_resp->next;
Jaromir Capik fce37a1
 	d_resp->next = NULL;
Jaromir Capik fce37a1
-	bzero((char *) d_resp->str, 128);
Jaromir Capik fce37a1
+	safe_bzero(d_resp->str);
Jaromir Capik fce37a1
 	d_resp->type = 0;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	return d_resp;
Jaromir Capik fce37a1
@@ -1235,17 +1235,17 @@
Jaromir Capik fce37a1
 	static char retaddr[1024];
Jaromir Capik fce37a1
 	int x;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) retaddr, 1024);
Jaromir Capik fce37a1
+	safe_bzero (retaddr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	he = gethostbyname (raddr);
Jaromir Capik fce37a1
 	if (!he)
Jaromir Capik fce37a1
 		return NULL;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (he->h_addrtype == AF_INET) {
Jaromir Capik fce37a1
-		snprintf (retaddr, 1023, "%s%s", inet_ntoa (*(struct in_addr *) he->h_addr_list[0]), extra);
Jaromir Capik fce37a1
+		safe_snprintf (retaddr, "%s%s", inet_ntoa (*(struct in_addr *) he->h_addr_list[0]), extra);
Jaromir Capik fce37a1
 		x = 0;
Jaromir Capik fce37a1
 		while (he->h_addr_list[x]) {
Jaromir Capik fce37a1
-			snprintf (d_resp->str, 127, "%s%s", inet_ntoa (*(struct in_addr *) he->h_addr_list[x]), extra);
Jaromir Capik fce37a1
+			safe_snprintf (d_resp->str, "%s%s", inet_ntoa (*(struct in_addr *) he->h_addr_list[x]), extra);
Jaromir Capik fce37a1
 			d_resp->type = AF_INET;
Jaromir Capik fce37a1
 			x++;
Jaromir Capik fce37a1
 			if (he->h_addr_list[x])
Jaromir Capik fce37a1
@@ -1275,18 +1275,18 @@
Jaromir Capik fce37a1
 	char ip6addr[128];
Jaromir Capik fce37a1
 	int x;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) retaddr, 1024);
Jaromir Capik fce37a1
+	safe_bzero (retaddr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	he = gethostbyname2 (raddr, AF_INET6);
Jaromir Capik fce37a1
 	if (!he)
Jaromir Capik fce37a1
 		return NULL;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (he->h_addrtype == AF_INET6) {
Jaromir Capik fce37a1
-		bzero ((char *) ip6addr, 128);
Jaromir Capik fce37a1
-		snprintf (retaddr, 1023, "%s%s", inet_ntop (AF_INET6, he->h_addr_list[0], ip6addr, 128), extra);
Jaromir Capik fce37a1
+		safe_bzero (ip6addr);
Jaromir Capik fce37a1
+		safe_snprintf (retaddr, "%s%s", inet_ntop (AF_INET6, he->h_addr_list[0], ip6addr, 128), extra);
Jaromir Capik fce37a1
 		x = 0;
Jaromir Capik fce37a1
 		while (he->h_addr_list[x]) {
Jaromir Capik fce37a1
-			snprintf (d_resp->str, 127, "%s%s", inet_ntop (AF_INET6, he->h_addr_list[x], ip6addr, 128), extra);
Jaromir Capik fce37a1
+			safe_snprintf (d_resp->str, "%s%s", inet_ntop (AF_INET6, he->h_addr_list[x], ip6addr, 128), extra);
Jaromir Capik fce37a1
 			d_resp->type = AF_INET6;
Jaromir Capik fce37a1
 			x++;
Jaromir Capik fce37a1
 			if (he->h_addr_list[x])
Jaromir Capik fce37a1
@@ -1331,11 +1331,11 @@
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	res_orig = res;
Jaromir Capik fce37a1
 	while (res) {
Jaromir Capik fce37a1
-		bzero ((char *) ip6addr, 128);
Jaromir Capik fce37a1
+		safe_bzero (ip6addr);
Jaromir Capik fce37a1
 		if (res->ai_family == PF_INET6) {
Jaromir Capik fce37a1
 			sin6 = (struct sockaddr_in6 *) res->ai_addr;
Jaromir Capik fce37a1
-			snprintf (retaddr, 1023, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
-			snprintf (d_resp->str, 127, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
+			safe_snprintf (retaddr, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
+			safe_snprintf (d_resp->str, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
 			d_resp->type = AF_INET6;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		if (res->ai_next && (res->ai_family == PF_INET || res->ai_family == PF_INET6))
Jaromir Capik fce37a1
@@ -1384,17 +1384,17 @@
Jaromir Capik fce37a1
 	res_orig = res;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	while (res) {
Jaromir Capik fce37a1
-		bzero ((char *) ip6addr, 128);
Jaromir Capik fce37a1
+		safe_bzero (ip6addr);
Jaromir Capik fce37a1
 		if (res->ai_family == PF_INET) {
Jaromir Capik fce37a1
 			sin = (struct sockaddr_in *) res->ai_addr;
Jaromir Capik fce37a1
-			snprintf (retaddr, 1023, "%s%s", inet_ntoa (sin->sin_addr), extra);
Jaromir Capik fce37a1
-			snprintf(d_resp->str, 127, "%s%s", inet_ntoa (sin->sin_addr), extra);
Jaromir Capik fce37a1
+			safe_snprintf (retaddr, "%s%s", inet_ntoa (sin->sin_addr), extra);
Jaromir Capik fce37a1
+			safe_snprintf(d_resp->str, "%s%s", inet_ntoa (sin->sin_addr), extra);
Jaromir Capik fce37a1
 			d_resp->type = AF_INET;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		if (res->ai_family == PF_INET6) {
Jaromir Capik fce37a1
 			sin6 = (struct sockaddr_in6 *) res->ai_addr;
Jaromir Capik fce37a1
-			snprintf (retaddr, 1023, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
-			snprintf (d_resp->str, 127, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
+			safe_snprintf (retaddr, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
+			safe_snprintf (d_resp->str, "%s%s", inet_ntop (AF_INET6, &sin6->sin6_addr, ip6addr, 128), extra);
Jaromir Capik fce37a1
 			d_resp->type = AF_INET6;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		if (res->ai_next && (res->ai_family == PF_INET || res->ai_family == PF_INET6))
Jaromir Capik fce37a1
@@ -1479,30 +1479,30 @@
Jaromir Capik fce37a1
 	if (family == PF_UNSPEC && !ipv6_cap)
Jaromir Capik fce37a1
 		family = PF_INET;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) extra, 32);
Jaromir Capik fce37a1
-	bzero ((char *) raddr, 1024);
Jaromir Capik fce37a1
+	safe_bzero (extra);
Jaromir Capik fce37a1
+	safe_bzero (raddr);
Jaromir Capik fce37a1
 	tmpstr = strstr (addr, "/");
Jaromir Capik fce37a1
 	if (tmpstr) {
Jaromir Capik fce37a1
-		strncpy (extra, tmpstr, 31);
Jaromir Capik fce37a1
+		safe_strncpy (extra, tmpstr);
Jaromir Capik fce37a1
 		strncpy (raddr, addr, strlen (addr) - strlen (tmpstr));
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 	else {
Jaromir Capik fce37a1
 		tmpstr = strstr (addr, " ");
Jaromir Capik fce37a1
 		if (tmpstr) {
Jaromir Capik fce37a1
-			strncpy (extra, tmpstr, 31);
Jaromir Capik fce37a1
+			safe_strncpy (extra, tmpstr);
Jaromir Capik fce37a1
 			strncpy (raddr, addr, strlen (addr) - strlen (tmpstr));
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		else
Jaromir Capik fce37a1
-			strncpy (raddr, addr, 1023);
Jaromir Capik fce37a1
+			safe_strncpy (raddr, addr);
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) retaddr, 1024);
Jaromir Capik fce37a1
+	safe_bzero (retaddr);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	if (family == PF_INET) {
Jaromir Capik fce37a1
 		tmpstr = _resolv_v4_ghbn (raddr, d_resp, extra);
Jaromir Capik fce37a1
 		if (!tmpstr)
Jaromir Capik fce37a1
 			return NULL;
Jaromir Capik fce37a1
-		strncpy (retaddr, tmpstr, 1024);
Jaromir Capik fce37a1
+		safe_strncpy (retaddr, tmpstr);
Jaromir Capik fce37a1
 		return retaddr;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -1511,7 +1511,7 @@
Jaromir Capik fce37a1
 			tmpstr = _resolv_v6_gai (raddr, d_resp, extra);
Jaromir Capik fce37a1
 			if (!tmpstr)
Jaromir Capik fce37a1
 				return NULL;
Jaromir Capik fce37a1
-			strncpy (retaddr, tmpstr, 1024);
Jaromir Capik fce37a1
+			safe_strncpy (retaddr, tmpstr);
Jaromir Capik fce37a1
 			return retaddr;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
@@ -1519,7 +1519,7 @@
Jaromir Capik fce37a1
 			tmpstr = _resolv_v6_ghbn2 (raddr, d_resp, extra);
Jaromir Capik fce37a1
 			if (!tmpstr)
Jaromir Capik fce37a1
 				return NULL;
Jaromir Capik fce37a1
-			strncpy (retaddr, tmpstr, 1024);
Jaromir Capik fce37a1
+			safe_strncpy (retaddr, tmpstr);
Jaromir Capik fce37a1
 			return retaddr;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
@@ -1529,13 +1529,13 @@
Jaromir Capik fce37a1
 			tmpstr = _resolv_unspec_gai (raddr, d_resp, extra);
Jaromir Capik fce37a1
 			if (!tmpstr)
Jaromir Capik fce37a1
 				return NULL;
Jaromir Capik fce37a1
-			strncpy (retaddr, tmpstr, 1024);
Jaromir Capik fce37a1
+			safe_strncpy (retaddr, tmpstr);
Jaromir Capik fce37a1
 			return retaddr;
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		if (f_gethostbyname && f_gethostbyname2) {
Jaromir Capik fce37a1
 			tmpstr = _resolv_v4_ghbn (raddr, d_resp, extra);
Jaromir Capik fce37a1
 			if (tmpstr) {
Jaromir Capik fce37a1
-				strncpy (retaddr, tmpstr, 1024);
Jaromir Capik fce37a1
+				safe_strncpy (retaddr, tmpstr);
Jaromir Capik fce37a1
 				d_resp_tmp = d_resp;
Jaromir Capik fce37a1
 				d_resp = new_dnsresp (d_resp);
Jaromir Capik fce37a1
 			}
Jaromir Capik fce37a1
diff -Naur sipcalc-1.1.5.orig/src/sub-output.c sipcalc-1.1.5/src/sub-output.c
Jaromir Capik fce37a1
--- sipcalc-1.1.5.orig/src/sub-output.c	2009-07-20 22:31:59.000000000 +0200
Jaromir Capik fce37a1
+++ sipcalc-1.1.5/src/sub-output.c	2012-01-24 18:44:29.468999531 +0100
Jaromir Capik fce37a1
@@ -135,11 +135,11 @@
Jaromir Capik fce37a1
 			printf ("%s\n", numtoquad (end));
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		if ((v4args & V4VERBSPLIT) == V4VERBSPLIT) {
Jaromir Capik fce37a1
-			bzero ((char *) ifi_tmp.p_v4addr, 19);
Jaromir Capik fce37a1
-			bzero ((char *) ifi_tmp.p_v4nmask, 16);
Jaromir Capik fce37a1
-			bzero ((char *) ifi_tmp.p_v6addr, 44);
Jaromir Capik fce37a1
-			snprintf (ifi_tmp.p_v4addr, 19, "%s", numtoquad (start));
Jaromir Capik fce37a1
-			snprintf (ifi_tmp.p_v4nmask, 16, "%s", numtoquad (splitmask));
Jaromir Capik fce37a1
+			safe_bzero (ifi_tmp.p_v4addr);
Jaromir Capik fce37a1
+			safe_bzero (ifi_tmp.p_v4nmask);
Jaromir Capik fce37a1
+			safe_bzero (ifi_tmp.p_v6addr);
Jaromir Capik fce37a1
+			safe_snprintf (ifi_tmp.p_v4addr, "%s", numtoquad (start));
Jaromir Capik fce37a1
+			safe_snprintf (ifi_tmp.p_v4nmask, "%s", numtoquad (splitmask));
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 		start += diff;
Jaromir Capik fce37a1
 		if (end == 0xffffffff || end >= ifi->v4ad.n_broadcast)
Jaromir Capik fce37a1
@@ -447,11 +447,11 @@
Jaromir Capik fce37a1
 	char inbuf[40], outbuf[256];
Jaromir Capik fce37a1
 	int x, y;
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	bzero ((char *) inbuf, 40);
Jaromir Capik fce37a1
-	bzero ((char *) outbuf, 256);
Jaromir Capik fce37a1
+	safe_bzero (inbuf);
Jaromir Capik fce37a1
+	safe_bzero (outbuf);
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	snprintf
Jaromir Capik fce37a1
-	(inbuf, 39, "%04x%04x%04x%04x%04x%04x%04x%04x",
Jaromir Capik fce37a1
+	safe_snprintf
Jaromir Capik fce37a1
+	(inbuf, "%04x%04x%04x%04x%04x%04x%04x%04x",
Jaromir Capik fce37a1
 	 addr.sip6_addr16[0],
Jaromir Capik fce37a1
 	 addr.sip6_addr16[1],
Jaromir Capik fce37a1
 	 addr.sip6_addr16[2],
Jaromir Capik fce37a1
@@ -467,7 +467,7 @@
Jaromir Capik fce37a1
 		y += 2;
Jaromir Capik fce37a1
 	}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
-	strcat (outbuf, "ip6.arpa.");
Jaromir Capik fce37a1
+	safe_strncat (outbuf, "ip6.arpa.");
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 	printf("%s", outbuf);
Jaromir Capik fce37a1
 }
Jaromir Capik fce37a1
@@ -642,10 +642,10 @@
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 		if ((v6args & V6VERBSPLIT) == V6VERBSPLIT) {
Jaromir Capik fce37a1
-			bzero ((char *) ifi_tmp.p_v4addr, 19);
Jaromir Capik fce37a1
-			bzero ((char *) ifi_tmp.p_v4nmask, 16);
Jaromir Capik fce37a1
-			bzero ((char *) ifi_tmp.p_v6addr, 44);
Jaromir Capik fce37a1
-			snprintf (ifi_tmp.p_v6addr, 44, "%s/%d", get_comp_v6 (start), m_argv6.v6splitnum);
Jaromir Capik fce37a1
+			safe_bzero (ifi_tmp.p_v4addr);
Jaromir Capik fce37a1
+			safe_bzero (ifi_tmp.p_v4nmask);
Jaromir Capik fce37a1
+			safe_bzero (ifi_tmp.p_v6addr);
Jaromir Capik fce37a1
+			safe_snprintf (ifi_tmp.p_v6addr, "%s/%d", get_comp_v6 (start), m_argv6.v6splitnum);
Jaromir Capik fce37a1
 		}
Jaromir Capik fce37a1
 
Jaromir Capik fce37a1
 		v6plus (&start, &sdiff);