aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--networking/arping.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/networking/arping.c b/networking/arping.c
index 782b61b64..4f1a2e2c5 100644
--- a/networking/arping.c
+++ b/networking/arping.c
@@ -71,7 +71,7 @@ static int send_pack(int sock, struct in_addr *src_addr,
71{ 71{
72 int err; 72 int err;
73 struct timeval now; 73 struct timeval now;
74 unsigned char buf[256]; 74 RESERVE_CONFIG_UBUFFER(buf, 256);
75 struct arphdr *ah = (struct arphdr *) buf; 75 struct arphdr *ah = (struct arphdr *) buf;
76 unsigned char *p = (unsigned char *) (ah + 1); 76 unsigned char *p = (unsigned char *) (ah + 1);
77 77
@@ -105,6 +105,7 @@ static int send_pack(int sock, struct in_addr *src_addr,
105 if (!(cfg&unicasting)) 105 if (!(cfg&unicasting))
106 brd_sent++; 106 brd_sent++;
107 } 107 }
108 RELEASE_CONFIG_BUFFER(buf);
108 return err; 109 return err;
109} 110}
110 111
@@ -456,12 +457,12 @@ int arping_main(int argc, char **argv)
456 457
457 while (1) { 458 while (1) {
458 sigset_t sset, osset; 459 sigset_t sset, osset;
459 unsigned char packet[4096]; 460 RESERVE_CONFIG_UBUFFER(packet, 4096);
460 struct sockaddr_ll from; 461 struct sockaddr_ll from;
461 socklen_t alen = sizeof(from); 462 socklen_t alen = sizeof(from);
462 int cc; 463 int cc;
463 464
464 if ((cc = recvfrom(s, packet, sizeof(packet), 0, 465 if ((cc = recvfrom(s, packet, 4096, 0,
465 (struct sockaddr *) &from, &alen)) < 0) { 466 (struct sockaddr *) &from, &alen)) < 0) {
466 perror("recvfrom"); 467 perror("recvfrom");
467 continue; 468 continue;
@@ -472,5 +473,6 @@ int arping_main(int argc, char **argv)
472 sigprocmask(SIG_BLOCK, &sset, &osset); 473 sigprocmask(SIG_BLOCK, &sset, &osset);
473 recv_pack(packet, cc, &from); 474 recv_pack(packet, cc, &from);
474 sigprocmask(SIG_SETMASK, &osset, NULL); 475 sigprocmask(SIG_SETMASK, &osset, NULL);
476 RELEASE_CONFIG_BUFFER(packet);
475 } 477 }
476} 478}