Re: [Exim] 4.11 dbm lookups failing

Top Page
Delete this message
Reply to this message
Author: Nico Erfurth
Date:  
To: Dean Brooks
CC: exim-users
Subject: Re: [Exim] 4.11 dbm lookups failing
Dean Brooks wrote:
> Hi,
>
> Installed 4.11 on a live production server this morning (okay, I'm gutsy).
>
> Thought everything was running ok, until I realized that none of our
> virtual domains were working correctly. Turns out that 4.11 was
> treating our "dbm" lookups as "dbmnz". All our local dbm lookups were
> failing as a result.



I posted about this yesterday (but it was related to nis then):

---------------------------------------------------------------

Well, this bug seems to be lurking around since a long time, and now it
showed up.

src/search.c has a bug in
search_findtype(uschar *name, int len)

the search starts like this

while (top > bot)
{
int mid = (top + bot)/2;
int c = Ustrncmp(name, lookup_list[mid].name, len);

looks fine for the first look, BUT, if you try to find the nis lookup it
fails (or it will pick nisplus), because the "nis" part of nisplus
matches. I think this bug showed up now, because of the new lookup-type,
so the search first hits "nisplus" before coming to "nis"

changing this (line 68)
int c = Ustrncmp(name, lookup_list[mid].name, len);

to

int c = Ustrcmp(name, lookup_list[mid].name);

solves the problem.

Thanks for your attention ;)