[cfe-dev] Status of stack-protector
Jean-Daniel Dupas
devlists at shadowlab.org
Fri Jan 8 07:11:19 PST 2010
OK, so it works but only if I reduce the stack buffer size a little more. Sorry for the noise.
Le 8 janv. 2010 à 16:01, Jean-Daniel Dupas a écrit :
> My bad. I just read a little more how the stack guard works, and saw that the position of the call is good.
> My problem is elsewhere as the behavior is not the same with GCC and clang. I will dig a little deeper to see what the difference is.
>
> Le 8 janv. 2010 à 15:54, Jean-Daniel Dupas a écrit :
>
>> Hello,
>>
>> While I was playing with stack protector option, I found a problem.
>>
>> In my test program (x86_64), the call to stack_chk_fail is generated after the 'ret' instruction and so is never reached (I'm not an x86 assembly expert, so correct me if I'm wrong on this point)
>>
>> -------------------
>> 0000000100000ea4 movq 0xd8(%rbp),%rax
>> 0000000100000ea8 movq (%rax),%rax
>> 0000000100000eab movq 0xf8(%rbp),%rcx
>> 0000000100000eaf cmpq %rcx,%rax
>> 0000000100000eb2 jne 0x00000eba
>> 0000000100000eb4 addq $0x40,%rsp
>> 0000000100000eb8 popq %rbp
>> 0000000100000eb9 ret
>> 0000000100000eba callq 0x00000ec0
>>
>> The same problem occurs on x86 too. I didn't try other arch.
>>
>> Is this a known issue ?
>>
>> This is my test file compiled using
>>
>> clang -fstack-protector-all -o stack stack.c
>>
>> ------------- stack.c --------------
>>
>> #include <libc.h>
>>
>> static
>> void test(const char *msg) {
>> char buffer[8];
>> bcopy(msg, buffer, strlen(msg) + 1);
>> fprintf(stderr, "%s\n", buffer);
>> }
>>
>> int main(int argc, const char **argv) {
>> test("Hello World !");
>> return 0;
>> }
>>
>> ------------------------
>>
>> When compiled with gcc, the execution is properly aborted at the end of the test function, but not when compiled with clang.
>>
>> -- Jean-Daniel
>>
>>
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
> -- Jean-Daniel
>
>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
-- Jean-Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20100108/a7cd1f7b/attachment.html>
More information about the cfe-dev
mailing list