diff options
author | Denis Vlasenko | 2008-03-12 22:14:34 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-03-12 22:14:34 +0000 |
commit | 4e6d5117b839cef41cd3919966f95bf25d24d8d9 (patch) | |
tree | 277c292905fefcdf40530c8c29e87d6b8c5f7864 /libbb | |
parent | 4e6c8120a53709c4a352db42e997303844c74584 (diff) | |
download | busybox-4e6d5117b839cef41cd3919966f95bf25d24d8d9.zip busybox-4e6d5117b839cef41cd3919966f95bf25d24d8d9.tar.gz |
inetd: make it NOMMU-capable and IPv6-friendly. Lots of renames
of variable/function names
Total: -2474 bytes
text data bss dec hex filename
802215 661 7452 810328 c5d58 busybox_old
800120 661 7428 808209 c5511 busybox_unstripped
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/create_icmp6_socket.c | 13 | ||||
-rw-r--r-- | libbb/create_icmp_socket.c | 13 | ||||
-rw-r--r-- | libbb/xconnect.c | 21 |
3 files changed, 28 insertions, 19 deletions
diff --git a/libbb/create_icmp6_socket.c b/libbb/create_icmp6_socket.c index 51899cd..a22ac5d 100644 --- a/libbb/create_icmp6_socket.c +++ b/libbb/create_icmp6_socket.c @@ -2,27 +2,26 @@ /* * Utility routines. * - * create raw socket for icmp (IPv6 version) protocol test permission + * create raw socket for icmp (IPv6 version) protocol * and drop root privileges if running setuid - * */ -//#include <sys/types.h> -//#include <netdb.h> -//#include <sys/socket.h> #include "libbb.h" #if ENABLE_FEATURE_IPV6 int 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" */ 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); diff --git a/libbb/create_icmp_socket.c b/libbb/create_icmp_socket.c index 3a46558..64beba8 100644 --- a/libbb/create_icmp_socket.c +++ b/libbb/create_icmp_socket.c @@ -2,26 +2,25 @@ /* * Utility routines. * - * create raw socket for icmp protocol test permission + * create raw socket for icmp protocol * and drop root privileges if running setuid - * */ -//#include <sys/types.h> -//#include <netdb.h> -//#include <sys/socket.h> #include "libbb.h" int create_icmp_socket(void) { - struct protoent *proto; int sock; - +#if 0 + struct protoent *proto; proto = getprotobyname("icmp"); /* if getprotobyname failed, just silently force * proto->p_proto to have the correct value for "icmp" */ sock = socket(AF_INET, SOCK_RAW, (proto ? proto->p_proto : 1)); /* 1 == ICMP */ +#else + sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */ +#endif if (sock < 0) { if (errno == EPERM) bb_error_msg_and_die(bb_msg_perm_denied_are_you_root); diff --git a/libbb/xconnect.c b/libbb/xconnect.c index 03ae773..950aee8 100644 --- a/libbb/xconnect.c +++ b/libbb/xconnect.c @@ -132,11 +132,15 @@ USE_FEATURE_IPV6(sa_family_t af,) /* Ugly parsing of host:addr */ if (ENABLE_FEATURE_IPV6 && host[0] == '[') { + /* Even uglier parsing of [xx]:nn */ host++; cp = strchr(host, ']'); - if (!cp || cp[1] != ':') /* Malformed: must have [xx]:nn */ - bb_error_msg_and_die("bad address '%s'", org_host); - //return r; /* return NULL */ + if (!cp || cp[1] != ':') { /* Malformed: must have [xx]:nn */ + bb_error_msg("bad address '%s'", org_host); + if (ai_flags & DIE_ON_ERROR) + xfunc_die(); + return NULL; + } } else { cp = strrchr(host, ':'); if (ENABLE_FEATURE_IPV6 && cp && strchr(host, ':') != cp) { @@ -144,13 +148,19 @@ USE_FEATURE_IPV6(sa_family_t af,) cp = NULL; /* it's not a port spec */ } } - if (cp) { + if (cp) { /* points to ":" or "]:" */ int sz = cp - host + 1; host = safe_strncpy(alloca(sz), host, sz); if (ENABLE_FEATURE_IPV6 && *cp != ':') cp++; /* skip ']' */ cp++; /* skip ':' */ - port = xatou16(cp); + port = bb_strtou(cp, NULL, 10); + if (errno || (unsigned)port > 0xffff) { + bb_error_msg("bad port spec '%s'", org_host); + if (ai_flags & DIE_ON_ERROR) + xfunc_die(); + return NULL; + } } memset(&hint, 0 , sizeof(hint)); @@ -221,6 +231,7 @@ len_and_sockaddr* xdotted2sockaddr(const char *host, int port) return str2sockaddr(host, port, AF_UNSPEC, AI_NUMERICHOST | DIE_ON_ERROR); } +#undef xsocket_type int xsocket_type(len_and_sockaddr **lsap, USE_FEATURE_IPV6(int family,) int sock_type) { SKIP_FEATURE_IPV6(enum { family = AF_INET };) |