Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180205165045.GX1627@brightrain.aerifal.cx>
Date: Mon, 5 Feb 2018 11:50:45 -0500
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: [PATCH v2] track pthread stack guard sizes

On Mon, Feb 05, 2018 at 11:24:03AM -0500, Rich Felker wrote:
> On Mon, Feb 05, 2018 at 07:18:44PM +0300, Alexander Monakov wrote:
> > On Fri, 2 Feb 2018, William Pitcock wrote:
> > > --- a/src/internal/pthread_impl.h
> > > +++ b/src/internal/pthread_impl.h
> > > @@ -46,6 +46,7 @@ struct pthread {
> > >  	char *dlerror_buf;
> > >  	int dlerror_flag;
> > >  	void *stdio_locks;
> > > +	size_t guard_size;
> > >  	uintptr_t canary_at_end;
> > >  	void **dtv_copy;
> > >  };
> > 
> > Doesn't this break SSP on powerpc and powerpc64 by changing offset of
> > 'canary_at_end'? If not, can you please mention why in the commit message?
> 
> The "_at_end" means it's at a fixed negative offset from the end of
> the structure. I already have this patch pending push in my tree, but
> I can add a separate commit commenting the ABI-mandated layout of the
> structure.

Done, pending push. BTW I wonder if we should also add static asserts
for this sort of thing, e.g.

_Static_assert(offsetof(struct pthread, canary_at_end) == sizeof(struct pthread) - 2*sizeof(size_t))

It would probably have to be implemented without actually using the
_Static_assert keyword since we don't depend on a C11 compiler, but of
course the usual tricks apply just fine.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.