In article <20110208220435.ga10...@britannica.bec.de>, Joerg Sonnenberger <jo...@britannica.bec.de> wrote: >On Tue, Feb 08, 2011 at 11:43:40PM +0200, Antti Kantee wrote: >> On Tue Feb 08 2011 at 22:41:57 +0100, Joerg Sonnenberger wrote: >> > On Tue, Feb 08, 2011 at 11:22:44PM +0200, Antti Kantee wrote: >> > > On Tue Feb 08 2011 at 22:00:49 +0100, Joerg Sonnenberger wrote: >> > > > On Tue, Feb 08, 2011 at 03:34:54PM -0500, Christos Zoulas wrote: >> > > > > Still the problem remains, how do we stack the calls to insert the >> > > > > ssp >> > > > > check at the top level, without resorting to rtld tricks? >> > > > >> > > > Let me try to summarize the situation to make sure I get it right: >> > > > >> > > > The fortification code wants to provide an inline function "read" that >> > > > calls the real "read" after doing the argument checks. >> > > > >> > > > rumphijack wants to override the "read" symbol, apply some magic and >> > > > call "_sys_read" for the real system call. >> > > >> > > No, it wants to override "whatever is the symbol applications are >> > > resolved to". For -current this is "_sys_read" (on nb5 it's "read"). >> > >> > That's not what the library is doing according to nm. It defines "read" >> > and not "_sys_read". >> >> Are you sure you're looking at a current version? >> >> pain-rustique:1:~> nm /usr/lib/librumphijack.so | grep read >> 000029d4 T _sys_read >> U pthread_create >> U pthread_join >> 00002a42 T readv > >I have different builds arounds. So why is _sys_read special and readv, >write, writev etc are not?
readv should be. We don't bother with writes, because they cannot trash the stack (although we could and detect overflows). christos