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

Reply via email to