From db3c584cbf398c47fe3c9e9428bc6512cb4a2f23 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Mon, 12 Jul 2021 13:06:40 +0100 Subject: [PATCH] cheri: fix qsort for capabilities On capability targets avoid copying pointers via unsigned long. --- stdlib/msort.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stdlib/msort.c b/stdlib/msort.c index cbe9a4a8fdb..43222e6c9a7 100644 --- a/stdlib/msort.c +++ b/stdlib/msort.c @@ -289,6 +289,10 @@ __qsort_r (void *b, size_t n, size_t s, __compar_d_fn_t cmp, void *arg) && ((char *) b - (char *) 0) % __alignof__ (uint64_t) == 0) p.var = 1; else if ((s & (sizeof (unsigned long) - 1)) == 0 +#ifdef __CHERI_PURE_CAPABILITY__ + && ((char *) b - (char *) 0) + % __alignof__ (void *) != 0 +#endif && ((char *) b - (char *) 0) % __alignof__ (unsigned long) == 0) p.var = 2; -- 2.47.2