38 lines
1.0 KiB
Diff
38 lines
1.0 KiB
Diff
|
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;
|