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.
This commit is contained in:
Rob Landley 2006-01-11 03:44:11 +00:00
parent 009765d2ca
commit bbf4e167f2

View File

@ -200,7 +200,7 @@ static void sendping(int junk)
{ {
struct icmp *pkt; struct icmp *pkt;
int i; int i;
char packet[datalen + 8]; char packet[datalen + sizeof(struct icmp)];
pkt = (struct icmp *) packet; pkt = (struct icmp *) packet;
@ -211,7 +211,7 @@ static void sendping(int junk)
pkt->icmp_id = myid; pkt->icmp_id = myid;
CLR(ntohs(pkt->icmp_seq) % MAX_DUP_CHK); 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)); pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
i = sendto(pingsock, packet, sizeof(packet), 0, i = sendto(pingsock, packet, sizeof(packet), 0,