summaryrefslogtreecommitdiff
path: root/package/busybox/busybox-1.5.0-max_host_len_40.patch
blob: 7b9ba1f7722103eda918bf4c3741b7764bb07d40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
diff -ur busybox-1.5.0/networking/dnsd.c busybox-1.5.0-patched/networking/dnsd.c
--- busybox-1.5.0/networking/dnsd.c	2007-03-22 15:21:23.000000000 -0500
+++ busybox-1.5.0-patched/networking/dnsd.c	2007-04-13 06:53:49.000000000 -0500
@@ -30,7 +30,7 @@
 #define DEBUG 0
 
 enum {
-	MAX_HOST_LEN = 16,      // longest host name allowed is 15
+	MAX_HOST_LEN = 41,      // longest host name allowed is 40
 	IP_STRING_LEN = 18,     // .xxx.xxx.xxx.xxx\0
 
 //must be strlen('.in-addr.arpa') larger than IP_STRING_LEN
@@ -186,17 +186,21 @@
 {
 	int i;
 	struct dns_entry *d=dnsentry;
+	char *p,*q;
+
+	q = (char *)&(qs[1]);
+	p = &(d->name[1]);
 
 	do {
 #if DEBUG
-		char *p,*q;
-		q = (char *)&(qs[1]);
-		p = &(d->name[1]);
 		fprintf(stderr, "\n%s: %d/%d p:%s q:%s %d",
 			__FUNCTION__, (int)strlen(p), (int)(d->name[0]),
 			p, q, (int)strlen(q));
 #endif
 		if (type == REQ_A) { /* search by host name */
+			p = &(d->name[1]);
+			if(strlen(q) != strlen(p))
+				continue;
 			for (i = 1; i <= (int)(d->name[0]); i++)
 				if (tolower(qs[i]) != d->name[i])
 					break;