check for + in the broadcast address before attempting a dns lookup

SVN-Revision: 7767
This commit is contained in:
Felix Fietkau 2007-06-29 00:07:43 +00:00
parent 810b0bcb22
commit fc649db702

View File

@ -0,0 +1,29 @@
Index: busybox-1.4.2/networking/ifconfig.c
===================================================================
--- busybox-1.4.2.orig/networking/ifconfig.c 2007-06-29 02:03:17.046772952 +0200
+++ busybox-1.4.2/networking/ifconfig.c 2007-06-29 02:03:49.938772608 +0200
@@ -376,18 +376,18 @@
#endif
sai.sin_family = AF_INET;
sai.sin_port = 0;
- if (!strcmp(host, bb_str_default)) {
- /* Default is special, meaning 0.0.0.0. */
- sai.sin_addr.s_addr = INADDR_ANY;
- }
#if ENABLE_FEATURE_IFCONFIG_BROADCAST_PLUS
- else if ((host[0] == '+' && !host[1]) && (mask & A_BROADCAST)
+ if ((host[0] == '+' && !host[1]) && (mask & A_BROADCAST)
&& (did_flags & (A_NETMASK|A_HOSTNAME)) == (A_NETMASK|A_HOSTNAME)
) {
/* + is special, meaning broadcast is derived. */
sai.sin_addr.s_addr = (~sai_netmask) | (sai_hostname & sai_netmask);
- }
+ } else
#endif
+ if (!strcmp(host, bb_str_default)) {
+ /* Default is special, meaning 0.0.0.0. */
+ sai.sin_addr.s_addr = INADDR_ANY;
+ }
#if ENABLE_FEATURE_IPV6
else if (inet_pton(AF_INET6, host, &sai6.sin6_addr) > 0) {
int sockfd6;