Ok, ping needs a rewrite from the ground up.  (This is not a busybox app.)
Fix bug 309, where ping -s 1 localhost would give an elapsed time 9 digits
long due to a stack overflow.  Apparently, iputils also does this.
diff --git a/networking/ping.c b/networking/ping.c
index 646f4ac..ed52abf 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -200,7 +200,7 @@
 {
 	struct icmp *pkt;
 	int i;
-	char packet[datalen + 8];
+	char packet[datalen + sizeof(struct icmp)];
 
 	pkt = (struct icmp *) packet;
 
@@ -211,7 +211,7 @@
 	pkt->icmp_id = myid;
 	CLR(ntohs(pkt->icmp_seq) % MAX_DUP_CHK);
 
-	gettimeofday((struct timeval *) &packet[8], NULL);
+	gettimeofday((struct timeval *) &pkt->icmp_dun, NULL);
 	pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
 
 	i = sendto(pingsock, packet, sizeof(packet), 0,