copy fixes to simplify link copying and always do the right thing.
ping could segfault because I'm an idiot, and tried to put a value in where I hadn't allocated storage. choke. -Erik
This commit is contained in:
12
ping.c
12
ping.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: ping.c,v 1.7 2000/01/26 20:06:48 erik Exp $
|
||||
* $Id: ping.c,v 1.8 2000/01/29 05:52:40 erik Exp $
|
||||
* Mini ping implementation for busybox
|
||||
*
|
||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||
@ -312,18 +312,14 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from)
|
||||
|
||||
static void ping(char *host)
|
||||
{
|
||||
struct protoent *proto;
|
||||
struct protoent *proto=NULL;
|
||||
struct hostent *h;
|
||||
char buf[MAXHOSTNAMELEN];
|
||||
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
||||
int sockopt;
|
||||
|
||||
if (!(proto = getprotobyname("icmp"))) {
|
||||
/* getprotobyname failed, so just silently force
|
||||
* proto->p_proto to have the correct value for "icmp" */
|
||||
proto->p_proto = 1;
|
||||
}
|
||||
if ((pingsock = socket(AF_INET, SOCK_RAW, proto->p_proto)) < 0) { /* 1 == ICMP */
|
||||
proto = getprotobyname("icmp");
|
||||
if ((pingsock = socket(AF_INET, SOCK_RAW, (proto)? proto->p_proto : 1 )) < 0) { /* 1 == ICMP */
|
||||
if (errno == EPERM) {
|
||||
fprintf(stderr, "ping: permission denied. (are you root?)\n");
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user