Date: Fri, 22 Oct 1999 11:03:42 -0700 (PDT) From: Archie Cobbs <archie@whistle.com> To: tarkhil@over.ru (Alex Povolotsky) Cc: freebsd-stable@FreeBSD.ORG, freebsd-net@FreeBSD.ORG Subject: Re: SIOCGIFCONF (or qmail?) problem? Message-ID: <199910221803.LAA67886@bubba.whistle.com> In-Reply-To: <19991021193216.D86089@over.ru> from Alex Povolotsky at "Oct 21, 1999 07:32:16 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Alex Povolotsky writes:
> I've just found, that bringing up ppp0 on a computer with one more network
> interface causes qmail-1.03 to crash.
>
> Investigating further, I've found that one of qmail's internal variables
> gets overwriten when calling ioctl SIOCGIFCONF with pointer to ifconf
> structure as argument (ipme.c, line 57 in qmail).
>
> I still have not found if qmail gives wrong address to ioctl or if ioctl use
> more memory than requested. The fail seems to occur after iterating through
> ds0 interface.
>
> By the way, what is ds0, how it should be configured, and where is it
> described? What does it do?
>
> Does anyone else runs FreeBSD 3.3-RELEASE with qmail and dial-in access?
This may or may not be the problem, but there is a common bug in
programs that use SIOCGIFCONF. The proper way to compute the byte
increment to the next entry is:
ifp = (struct ifreq *) ((char *) &ifp->ifr_addr
+ MAX(ifp->ifr_addr.sa_len, sizeof(ifp->ifr_addr))))
The WRONG way to do it is:
ifp = (struct ifreq *)
((char *) &ifp->ifr_addr + ifp->ifr_addr.sa_len))
This bug usually only gets triggered when there are discard,
tunnel, etc. interfaces which have no link information.
You might plow through the qmail sources and check.
-Archie
___________________________________________________________________________
Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199910221803.LAA67886>
