|
Message-ID: <20161101223025.GG5749@port70.net> Date: Tue, 1 Nov 2016 23:30:25 +0100 From: Szabolcs Nagy <nsz@...t70.net> To: "LeMay, Michael" <michael.lemay@...el.com> Cc: "musl@...ts.openwall.com" <musl@...ts.openwall.com> Subject: Re: [RFC PATCH v2 1/4] disable check for buggy brk implementations when SafeStack is enabled * LeMay, Michael <michael.lemay@...el.com> [2016-10-28 19:56:18 +0000]: > The check relies on comparing the addresses of stack-allocated objects > to addresses returned by the brk syscall. SafeStack moves the > allocations to the unsafe stack, breaking the check. This patch > disables the check when SafeStack is enabled. > > Signed-off-by: Michael LeMay <michael.lemay@...el.com> > --- > src/malloc/expand_heap.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/src/malloc/expand_heap.c b/src/malloc/expand_heap.c > index d8c0be7..af51451 100644 > --- a/src/malloc/expand_heap.c > +++ b/src/malloc/expand_heap.c > @@ -13,6 +13,7 @@ > > static int traverses_stack_p(uintptr_t old, uintptr_t new) > { > +#if !defined(__has_feature) || !__has_feature(safe_stack) preprocessing this fails on any released version of gcc https://godbolt.org/g/hHWEzI if __has_feature is not defined it expands to 0 and 0(safe_stack) is invalid syntax. e.g. this works: #ifdef __has_feature #if __has_feature(safe_stack) #define HAS_SAFE_STACK 1 #endif #endif > const uintptr_t len = 8<<20; > uintptr_t a, b; > > @@ -23,6 +24,7 @@ static int traverses_stack_p(uintptr_t old, uintptr_t new) > b = (uintptr_t)&b; > a = b > len ? b-len : 0; > if (new>a && old<b) return 1; > +#endif > > return 0; > } > -- > 2.7.4
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.