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.