[exim] Re: Problems with ${if ..} conditions

Top Page
Delete this message
Reply to this message
Author: Nikolaus Rath
Date:  
To: exim-users
Subject: [exim] Re: Problems with ${if ..} conditions
Tony Finch <dot@???> wrote:
>> Breakpoint 2, eval_condition (s=0xbfbffc85 "{a}{b} {true} {false}}", yield=0xbfbfec88) at expand.c:1772
>> 1772        sub[i] = expand_string_internal(s+1, TRUE, &s, yield == NULL);
>> (gdb) p s
>> $12 = (uschar *) 0xbfbffc85 "{a}{b} {true} {false}}"
>> (gdb) s
>> expand_string_internal (
>>     string=0x7374706d <Error reading address 0x7374706d: Bad address>, ket_ends=1,
>>     left=0x6f72705f, skipping=0) at expand.c:2602
>> [...]
>> 2659        continue;

>
> It's already gone wrong. The value passed to expand_string_internal which
> should be s+1 has become 0x7374706d i.e. "mpts", and &s has become
> 0x6f72705f i.e. "_pro". Looks like the stack has been messed up. You
> should try to work out when this happens.


I haven't the slighest idea how to. How can I detect wheter the stack
is messed up at a certain step or not?

>
> What's different about the way the working and broken binaries have
> been compiled?


Completely different systems. The broken one was compiled on a FreeBSD
Server, the working on my local linux system. However, it turned out
that the FreeBSD gcc was compiled with the stack smash protection
patch.


--Nikolaus

--
Diskutiere nie mit einem Idioten:
Sie ziehen Dich auf ihr Niveau herab und schlagen Dich dann mit
Erfahrung.