fa.netbsd.tech.net
[Top] [All Lists]

Re: dhcpd

Subject: Re: dhcpd
From: Patrick Welche
Date: Thu, 13 Sep 2007 11:02:27 UTC
Newsgroups: fa.netbsd.tech.net

On Wed, Sep 12, 2007 at 08:09:09PM -0400, Greg Troxel wrote:
> If anyone wants to try this change, I think it will fix dhcp, but I
> haven't even compiled it.  (The code looks like it has more problems -
> lending weight to the 'all users of SIOCGIFCONF shoudl be converted to
> getifaddrs.)  The if being changed will never be taken in -current.
> 
> Index: dist/dhcp/common/discover.c
> ===================================================================
> RCS file: /cvsroot/src/dist/dhcp/common/discover.c,v
> retrieving revision 1.9
> diff -u -p -r1.9 discover.c
> --- dist/dhcp/common/discover.c       31 May 2007 02:58:10 -0000      1.9
> +++ dist/dhcp/common/discover.c       13 Sep 2007 00:07:07 -0000
> @@ -235,7 +235,7 @@ void discover_interfaces (state)
>  
>               memcpy(&ifcpy, (caddr_t)ic.ifc_req + i, sizeof(struct ifreq));
>  #ifdef HAVE_SA_LEN
> -             if (ifp -> ifr_addr.sa_len > sizeof (struct sockaddr)) {
> +             if (ifp -> ifr_addr.sa_len > sizeof (ifp.ifr_ifru)) {
>                       if (sizeof(struct ifreq) + ifp->ifr_addr.sa_len >
>                           sizeof(ifcpy))
>                               break;
> 

Last night my coach journey ended too soon ;-) dhpcd's use of the results
of SIOCGIFCONF was the right place to look, because the first time
through the loop, all is OK, but the second time around, the size matters

                        i += offsetof(struct ifreq, ifr_ifru) +
                            ifp -> ifr_addr.sa_len;
or
                        i += sizeof *ifp;
and the next use of (ic.ifc_req + i) - the SIOCGIFFLAGS ioctl - fails.

I tried

                if (ifp -> ifr_addr.sa_len > sizeof (ifp -> ifr_ifru)) {       

as you suggest, and all is well!

Thank you,

Patrick

<Prev in Thread] Current Thread [Next in Thread>
  • Re: dhcpd, Greg Troxel
    • Message not available
    • Message not available
      • Re: dhcpd, Greg Troxel
        • Message not available
        • Message not available
          • Re: dhcpd, Patrick Welche <=