public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/23221] New: -fstack-protector does not protect tail call functions
@ 2005-08-03 22:38 drepper at redhat dot com
  2005-08-03 23:00 ` [Bug middle-end/23221] " drepper at redhat dot com
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: drepper at redhat dot com @ 2005-08-03 22:38 UTC (permalink / raw)
  To: gcc-bugs

Compiling this little bit of code with -fstack-protector-all

extern int foo (int);
int bar (int a, int b)
{
  return foo (a + b);
}

produces on x86-64 the following object code:

   0:   01 f7                   add    %esi,%edi
   2:   64 48 8b 04 25 28 00    mov    %fs:0x28,%rax
   9:   00 00
   b:   48 89 44 24 f8          mov    %rax,0xfffffffffffffff8(%rsp)
  10:   31 c0                   xor    %eax,%eax
  12:   e9 00 00 00 00          jmpq   17 <bar+0x17>

The canary is set up but not tested.  Before the jump to the next function the
value must be checked.  This also applies to -fstack-protector (with appropriate
input) and to all architectures.

-- 
           Summary: -fstack-protector does not protect tail call functions
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: drepper at redhat dot com
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23221


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-08-04  4:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-08-03 22:38 [Bug middle-end/23221] New: -fstack-protector does not protect tail call functions drepper at redhat dot com
2005-08-03 23:00 ` [Bug middle-end/23221] " drepper at redhat dot com
2005-08-03 23:14 ` pinskia at gcc dot gnu dot org
2005-08-03 23:15 ` rth at gcc dot gnu dot org
2005-08-04  3:57 ` cvs-commit at gcc dot gnu dot org
2005-08-04  4:01 ` rth at gcc dot gnu dot org
2005-08-04  4:18 ` pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).