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;