← Commit list

e6ae6e3d3

Glenn L McGrath
Glenn L McGrath
2003-01-19
SOURCE BUG Duration: 2s

Subject

fix missed option argument for -I , interface name checks redesigned, patch by Nick Fedchik

SOURCE BUG

This commit was genuinely broken at the time (not related to our build system): sysdeps/linux/Config.in "fileutils/Config.in" dosyasini kaynak gosteriyor ama bu dosya repoda hic var olmadi (2002-12-05 - 2003-02-15 arasi orijinal yazar hatasi, 3238ea167 ile duzeltildi)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Debian 14.2.0-19) 14.2.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/arping.c+16 -11
@@ -63,8 +63,9 @@ static void set_signal(int signo, void (*handler) (void))
}
#endif
-static int send_pack(int sock, struct in_addr *src_addr, struct in_addr *dst_addr,
- struct sockaddr_ll *ME, struct sockaddr_ll *HE)
+static int send_pack(int sock, struct in_addr *src_addr,
+ struct in_addr *dst_addr, struct sockaddr_ll *ME,
+ struct sockaddr_ll *HE)
{
int err;
struct timeval now;
@@ -274,7 +275,7 @@ int arping_main(int argc, char **argv)
setuid(uid);
- while ((ch = getopt(argc, argv, "h?bfDUAqc:w:s:I")) != EOF) {
+ while ((ch = getopt(argc, argv, "h?bfDUAqc:w:s:I:")) != EOF) {
switch (ch) {
case 'b':
broadcast_only = 1;
@@ -300,6 +301,13 @@ int arping_main(int argc, char **argv)
timeout = atoi(optarg);
break;
case 'I':
+ if (optarg == NULL)
+ show_usage();
+ if (xstrlen(optarg) > IF_NAMESIZE) {
+ error_msg("Interface name `%s' must be less than %d", optarg,
+ IF_NAMESIZE);
+ exit(2);
+ }
device = optarg;
break;
case 'f':
@@ -322,10 +330,6 @@ int arping_main(int argc, char **argv)
target = *argv;
- if (device == NULL) {
- error_msg("-I <interface> is required!");
- exit(1);
- }
if (s < 0) {
error_msg("socket");
@@ -338,7 +342,7 @@ int arping_main(int argc, char **argv)
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, device, IFNAMSIZ - 1);
if (ioctl(s, SIOCGIFINDEX, &ifr) < 0) {
- error_msg("unknown interface %s", device);
+ error_msg("Interface %s not found", device);
exit(2);
}
ifindex = ifr.ifr_ifindex;
@@ -348,11 +352,11 @@ int arping_main(int argc, char **argv)
exit(2);
}
if (!(ifr.ifr_flags & IFF_UP)) {
- error_msg("Interface \"%s\" is down", device);
+ error_msg("Interface %s is down", device);
exit(2);
}
if (ifr.ifr_flags & (IFF_NOARP | IFF_LOOPBACK)) {
- error_msg("Interface \"%s\" is not ARPable", device);
+ error_msg("Interface %s is not ARPable", device);
exit(dad ? 0 : 2);
}
}
@@ -388,7 +392,7 @@ int arping_main(int argc, char **argv)
if (setsockopt
(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, device,
strlen(device) + 1) == -1)
- perror("WARNING: interface is ignored");
+ error_msg("WARNING: interface %s is ignored", device);
}
memset(&saddr, 0, sizeof(saddr));
saddr.sin_family = AF_INET;
@@ -458,6 +462,7 @@ int arping_main(int argc, char **argv)
{
struct sigaction sa;
+
memset(&sa, 0, sizeof(sa));
sa.sa_flags = SA_RESTART;