Re: [EXIM] Bug in check_host()? Either that or in linux libc

Top Page
Delete this message
Reply to this message
Author: Andreas Jaeger
Date:  
To: Mark Baker
CC: exim-users
Subject: Re: [EXIM] Bug in check_host()? Either that or in linux libc
>>>>> Mark Baker writes:

Mark> I had problems with a machine on the local network not being allowed to
Mark> relay, when it definitely should have been allowed to (it matches
Mark> 10.0.0.0/8, which was in host_accept_relay).


Mark> I traced the problem to a line in check_host() where it converts the textual
Mark> form of the IP address back into binary to test it. It does:


Mark> insize = host_aton(host_address, incoming);


Mark> All the documentation I can find for host_aton suggests that it isn't
Mark> supposed to return a length, but merely any positive value on success, and
Mark> that it only works for IPv4 addresses. With linux (glibc 2.1.1) it does
Mark> appear to return a length, and to work with proper IPv6 addresses, but fails
Mark> to cope (fills in incoming with garbage) with IPv4 compatibility addresses
Mark> (like ::ffff:10.0.0.3) which, in a world where most people still use IPv4,
Mark> makes a copy of exim compiled with IPv6 support unusable.


host_aton is a exim internal function. There was a bug in glibc
2.1.1pre2 which had some problems with matching all numeric hosts (see
PR libc/1096 and 1109) but there's no known problem in glibc 2.1.1.

If you're running 2.1.1pre2, please upgrade to 2.1.1 final - otherwise
please explain in more details what's wrong - with glibc or with
exim. I've to admit that your report doesn't make sense to me.

Andreas
-- 
 Andreas Jaeger   aj@???    jaeger@???
  for pgp-key finger ajaeger@???


--
*** Exim information can be found at http://www.exim.org/ ***