check for + in the broadcast address before attempting a dns lookup
authorFelix Fietkau <nbd@openwrt.org>
Fri, 29 Jun 2007 00:07:43 +0000 (00:07 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 29 Jun 2007 00:07:43 +0000 (00:07 +0000)
SVN-Revision: 7767

package/busybox/patches/260-broadcast_plus.patch [new file with mode: 0644]

diff --git a/package/busybox/patches/260-broadcast_plus.patch b/package/busybox/patches/260-broadcast_plus.patch
new file mode 100644 (file)
index 0000000..60b2afc
--- /dev/null
@@ -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;