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:
parent
009765d2ca
commit
bbf4e167f2
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user