summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.4.0-max_host_len_40.patch
blob: 3c3290054bd8d000989812b246de4014fe629cd6 (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
diff -ur busybox-1.2.2.1/networking/dnsd.c busybox-1.2.2.1-patched/networking/dnsd.c
--- busybox-1.2.2.1/networking/dnsd.c	2006-10-24 15:21:17.000000000 -0500
+++ busybox-1.2.2.1-patched/networking/dnsd.c	2007-04-12 12:49:53.000000000 -0500
@@ -31,11 +31,11 @@
 
 #define is_daemon()  (flags&16)
 #define is_verbose() (flags&32)
-//#define DEBUG 
+#undef DEBUG 
 
 
 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
@@ -229,19 +229,23 @@
 {
 	int i;
 	struct dns_entry *d = dnsentry;
+	char *p,*q;
+
+	q = (char *)&(qs[1]);
+	p = &(d->name[1]);
 
 	if(d) do {
 #ifdef DEBUG
 		if(qs && d) {
-			char *p,*q;
-			q = (char *)&(qs[1]);
-			p = &(d->name[1]);
 			fprintf(stderr, "\n%s: %d/%d p:%s q:%s %d", 
 				__FUNCTION__, strlen(p), (int)(d->name[0]), 
 				p, q, 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;
@@ -398,13 +402,15 @@
 		fprintf(stderr,"fileconf: %s\n", fileconf);
 	}
 
-	if(is_daemon())
+	if(is_daemon()) {
 #ifdef BB_NOMMU
 		/* reexec for vfork() do continue parent */
 		vfork_daemon_rexec(1, 0, argc, argv, "-d");
 #else
 		bb_xdaemon(1, 0);
 #endif
+		daemonmode = 1;
+	}
 
 	dnsentryinit(is_verbose());