> On Fri, Oct 02, 1998 at 04:22:35PM +0100, Nigel Metheringham wrote:
> > By the description of the bug, you can work round this by never doing
> > lookups on hostnames... which is exactly what we do (only the IP addresses
> > are reliable so why bother reverse mapping them - it takes significant
> > extra time).
>
> Yep I've seen the same thing, the backtrace from gdb shows:
>
> #0 0x371c8 in host_scan_for_local_hosts ()
> #1 0x37764 in host_find_byname ()
> #2 0x374dc in host_find_byaddr ()
> #3 0x482c8 in smtp_start_session ()
> #4 0x1e180 in handle_smtp_call ()
> #5 0x1f818 in daemon_go ()
> #6 0x2dfc4 in main ()
Right. The problem lies in host_find_byaddr(). host_find_byname()
assumes that the 'address' field of its first arg will be NULL, but
host_find_byaddr() forgets to clear it. Suggested but totally
unofficial patch attached.
Regards,
Malcolm
--
Malcolm Ray University of London Computer Centre
*** exim-2.04/src/host.c.dist Fri Oct 2 18:23:39 1998
--- exim-2.04/src/host.c Fri Oct 2 18:24:05 1998
***************
*** 1090,1095 ****
--- 1090,1096 ----
happened to own a reverse zone could set it to point to any names at all. */
h.name = yield;
+ h.address = NULL;
h.next = NULL;
if (host_find_byname(&h, NULL, FALSE) == HOST_FIND_FAILED)