X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libbb%2Fcreate_icmp6_socket.c;h=91e478ec83c62191510364c0212dda69d1f4b28d;hb=781b672b372ade5c1903adbdc4de8dcb16a29a37;hp=596610449b1ffc2febb2d3d887fc4459f15458de;hpb=cad5364599eb5062d59e0c397ed638ddd61a8d5d;p=oweals%2Fbusybox.git diff --git a/libbb/create_icmp6_socket.c b/libbb/create_icmp6_socket.c index 596610449..91e478ec8 100644 --- a/libbb/create_icmp6_socket.c +++ b/libbb/create_icmp6_socket.c @@ -2,37 +2,36 @@ /* * Utility routines. * - * create raw socket for icmp (IPv6 version) protocol test permision - * and drop root privilegies if running setuid + * create raw socket for icmp (IPv6 version) protocol + * and drop root privileges if running setuid * + * Licensed under GPLv2, see file LICENSE in this tarball for details. */ -#include -#include -#include -#include -#include #include "libbb.h" -#ifdef CONFIG_FEATURE_IPV6 -int create_icmp6_socket(void) +#if ENABLE_FEATURE_IPV6 +int FAST_FUNC create_icmp6_socket(void) { - struct protoent *proto; int sock; - +#if 0 + struct protoent *proto; proto = getprotobyname("ipv6-icmp"); /* if getprotobyname failed, just silently force * proto->p_proto to have the correct value for "ipv6-icmp" */ - if ((sock = socket(AF_INET6, SOCK_RAW, - (proto ? proto->p_proto : IPPROTO_ICMPV6))) < 0) { + sock = socket(AF_INET6, SOCK_RAW, + (proto ? proto->p_proto : IPPROTO_ICMPV6)); +#else + sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); +#endif + if (sock < 0) { if (errno == EPERM) bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); - else - bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket); + bb_perror_msg_and_die(bb_msg_can_not_create_raw_socket); } /* drop root privs if running setuid */ - setuid(getuid()); + xsetuid(getuid()); return sock; }