We get 3 dns servers in our network. ipconfig will take only the first 2. It doesnt advance the pointer correctly, As a result, the following entries in the reply will be parsed incorrectly. len must not change. diff -p -purN klibc-0.171.orig/ipconfig/bootp_proto.c klibc-0.171/ipconfig/bootp_proto.c --- klibc-0.171.orig/ipconfig/bootp_proto.c 2004-06-16 20:30:05.000000000 +0200 +++ klibc-0.171/ipconfig/bootp_proto.c 2004-09-02 12:38:19.000000000 +0200 @@ -89,19 +89,13 @@ bootp_parse(struct netdev *dev, struct b switch (opt) { case 1: /* subnet mask */ - if (len > 4) - len = 4; - memcpy(&dev->ip_netmask, ext, len); + memcpy(&dev->ip_netmask, ext, len > 4 ? 4 : len); break; case 3: /* default gateway */ - if (len > 4) - len = 4; - memcpy(&dev->ip_gateway, ext, len); + memcpy(&dev->ip_gateway, ext, len > 4 ? 4 : len); break; case 6: /* DNS server */ - if (len > 8) - len = 8; - memcpy(&dev->ip_nameserver, ext, len); + memcpy(&dev->ip_nameserver, ext, len > 8 ? 8 : len); break; case 12: /* host name */ if (len > sizeof(dev->hostname) - 1) @@ -126,9 +120,7 @@ bootp_parse(struct netdev *dev, struct b dev->mtu = (ext[0] << 8) + ext[1]; break; case 28: /* broadcast addr */ - if (len > 4) - len = 4; - memcpy(&dev->ip_broadcast, ext, len); + memcpy(&dev->ip_broadcast, ext, len > 4 ? 4 : len); break; case 40: /* NIS domain name */ if (len > sizeof(dev->nisdomainname) - 1) -- USB is for mice, FireWire is for men! sUse lINUX ag, n?RNBERG