------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=1122
           Summary: Segmentation violation and lookup problems from main
                    config file
           Product: Exim
           Version: 4.76
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: bug
          Priority: high
         Component: Lookups
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


My exim config file has a line similar to the following:

localhost_number = ${lookup{hello}lsearch{/tmp/world}{$value}{255}}

In exim 4.76 (and possibly earlier - 4.72 is the last working version I've
tried) this causes a SEGV.

In readconf.c we have at lines 3190/3191:

  uschar *s = expand_string(host_number_string);
  long int n = Ustrtol(s, &end, 0);

i.e. the value returned by expand_string(host_number_string) is passed
directly to Ustrtol. If expand_string returns NULL then we get the SEGV. 

I've changed these lines as follows:

  long int n;
  uschar *s = expand_string(host_number_string);
  if (s == NULL)
    log_write(0, LOG_MAIN|LOG_PANIC_DIE,
      "failed to expand localhost_number \"%s\": %s",
      host_number_string, expand_string_message);
  n = Ustrtol(s, &end, 0);

Which now at least gives me a panic message with the following:

expand_string_message: unknown lookup type "lsearch"

Which brings me to part 2...

lsearch appears not to exist because readconf_main() is called from exim.c
before init_lookup_list() is called. I tried moving this call to just before
readconf_main() and the problem goes away. But the comments around the call to
init_lookup_list() at line 3615 give a certain amount of concern about this as
a solution!


-- 
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to