12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 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());
-
|