diff options
Diffstat (limited to 'ping.c')
-rw-r--r-- | ping.c | 10 |
1 files changed, 3 insertions, 7 deletions
@@ -1,6 +1,6 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | 1 | /* vi: set sw=4 ts=4: */ |
2 | /* | 2 | /* |
3 | * $Id: ping.c,v 1.43 2001/05/21 20:30:51 andersen Exp $ | 3 | * $Id: ping.c,v 1.44 2001/07/12 20:26:31 andersen Exp $ |
4 | * Mini ping implementation for busybox | 4 | * Mini ping implementation for busybox |
5 | * | 5 | * |
6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> | 6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> |
@@ -191,11 +191,7 @@ static void ping(const char *host) | |||
191 | int pingsock, c; | 191 | int pingsock, c; |
192 | char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN]; | 192 | char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN]; |
193 | 193 | ||
194 | if ((pingsock = socket(AF_INET, SOCK_RAW, 1)) < 0) /* 1 == ICMP */ | 194 | pingsock = create_raw_socket(); |
195 | perror_msg_and_die("creating a raw socket"); | ||
196 | |||
197 | /* drop root privs if running setuid */ | ||
198 | setuid(getuid()); | ||
199 | 195 | ||
200 | memset(&pingaddr, 0, sizeof(struct sockaddr_in)); | 196 | memset(&pingaddr, 0, sizeof(struct sockaddr_in)); |
201 | 197 | ||
@@ -434,7 +430,7 @@ static void ping(const char *host) | |||
434 | if (errno == EPERM) | 430 | if (errno == EPERM) |
435 | error_msg_and_die("permission denied. (are you root?)"); | 431 | error_msg_and_die("permission denied. (are you root?)"); |
436 | else | 432 | else |
437 | perror_msg_and_die("creating a raw socket"); | 433 | perror_msg_and_die(can_not_create_raw_socket); |
438 | } | 434 | } |
439 | 435 | ||
440 | /* drop root privs if running setuid */ | 436 | /* drop root privs if running setuid */ |