diff -ruN old/iptables_profectio/iptables.c new/iptables_profectio/iptables.c
--- old/iptables_profectio/iptables.c	2004-08-03 22:19:07.000000000 -0400
+++ new/iptables_profectio/iptables.c	2004-08-03 22:26:01.000000000 -0400
@@ -551,7 +551,7 @@
 
 		while (host->h_addr_list[*naddr] != (char *) NULL)
 			(*naddr)++;
-		addr = fw_calloc(*naddr, sizeof(struct in_addr));
+		addr = fw_calloc(*naddr, sizeof(struct in_addr) * *naddr);
 		for (i = 0; i < *naddr; i++)
 			inaddrcpy(&(addr[i]),
 				  (struct in_addr *) host->h_addr_list[i]);
@@ -2340,12 +2340,9 @@
 		e = NULL;
 	}
 
-	for (c = 0; c < nsaddrs; c++)
-		free(&saddrs[c]);
-
-	for (c = 0; c < ndaddrs; c++)
-		free(&daddrs[c]);
-
+	free(saddrs);
+	free(daddrs);
+	
 	if (opts != original_opts) {
 		free(opts);
 		opts = original_opts;
