diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-04-29 12:31:53 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-04-29 12:31:53 +0000 |
commit | b34266b42b5f6f78b7346c9ca90caebcd59db345 (patch) | |
tree | 4e040efe40ba8f35415eb4d3f4bf64ca20274956 /networking/ping.c | |
parent | a0c103a30a96e20794630c5daa4aad5926a151f2 (diff) | |
download | busybox-w32-b34266b42b5f6f78b7346c9ca90caebcd59db345.tar.gz busybox-w32-b34266b42b5f6f78b7346c9ca90caebcd59db345.tar.bz2 busybox-w32-b34266b42b5f6f78b7346c9ca90caebcd59db345.zip |
ping: dont leak uninitialized data in ping packets
function old new delta
sendping4 176 186 +10
sendping6 93 100 +7
Diffstat (limited to 'networking/ping.c')
-rw-r--r-- | networking/ping.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/networking/ping.c b/networking/ping.c index 299148641..c3a71071c 100644 --- a/networking/ping.c +++ b/networking/ping.c | |||
@@ -372,9 +372,10 @@ static void sendping4(int junk ATTRIBUTE_UNUSED) | |||
372 | * *after* packet. Saves one if() */ | 372 | * *after* packet. Saves one if() */ |
373 | struct icmp *pkt = alloca(datalen + ICMP_MINLEN + 4); | 373 | struct icmp *pkt = alloca(datalen + ICMP_MINLEN + 4); |
374 | 374 | ||
375 | memset(pkt, 0, datalen + ICMP_MINLEN + 4); | ||
375 | pkt->icmp_type = ICMP_ECHO; | 376 | pkt->icmp_type = ICMP_ECHO; |
376 | pkt->icmp_code = 0; | 377 | /*pkt->icmp_code = 0;*/ |
377 | pkt->icmp_cksum = 0; | 378 | /*pkt->icmp_cksum = 0;*/ |
378 | pkt->icmp_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */ | 379 | pkt->icmp_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */ |
379 | pkt->icmp_id = myid; | 380 | pkt->icmp_id = myid; |
380 | 381 | ||
@@ -391,9 +392,10 @@ static void sendping6(int junk ATTRIBUTE_UNUSED) | |||
391 | { | 392 | { |
392 | struct icmp6_hdr *pkt = alloca(datalen + sizeof(struct icmp6_hdr) + 4); | 393 | struct icmp6_hdr *pkt = alloca(datalen + sizeof(struct icmp6_hdr) + 4); |
393 | 394 | ||
395 | memset(pkt, 0, datalen + sizeof(struct icmp6_hdr) + 4); | ||
394 | pkt->icmp6_type = ICMP6_ECHO_REQUEST; | 396 | pkt->icmp6_type = ICMP6_ECHO_REQUEST; |
395 | pkt->icmp6_code = 0; | 397 | /*pkt->icmp6_code = 0;*/ |
396 | pkt->icmp6_cksum = 0; | 398 | /*pkt->icmp6_cksum = 0;*/ |
397 | pkt->icmp6_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */ | 399 | pkt->icmp6_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */ |
398 | pkt->icmp6_id = myid; | 400 | pkt->icmp6_id = myid; |
399 | 401 | ||