[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] malloca: pacify -Wcheri-provenance
From: |
Paul Eggert |
Subject: |
[PATCH] malloca: pacify -Wcheri-provenance |
Date: |
Tue, 7 Nov 2023 10:55:36 -0800 |
This shouldn’t affect generated code when optimizing.
* lib/malloca.c (mmalloca): Pacify -Wcheri-provenance on CHERI-64 cc.
(freea): Assign to temporaries to simplify debugging and avoid casts.
---
ChangeLog | 7 +++++++
lib/malloca.c | 11 +++++++----
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c206ebccc9..b93b28f326 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2023-11-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ malloca: pacify -Wcheri-provenance
+ This shouldn’t affect generated code when optimizing.
+ * lib/malloca.c (mmalloca): Pacify -Wcheri-provenance on CHERI-64 cc.
+ (freea): Assign to temporaries to simplify debugging and avoid casts.
+
2023-11-07 Bruno Haible <bruno@clisp.org>
rawmemchr: Port to CHERI.
diff --git a/lib/malloca.c b/lib/malloca.c
index f055b1e5ca..690ce2324b 100644
--- a/lib/malloca.c
+++ b/lib/malloca.c
@@ -60,7 +60,7 @@ mmalloca (size_t n)
/* The ckd_add avoids signed integer overflow on
theoretical platforms where UINTPTR_MAX <= INT_MAX. */
ckd_add (&umemplus, umem, sizeof (small_t) + sa_alignment_max - 1);
- idx_t offset = ((umemplus & ~alignment2_mask)
+ idx_t offset = (umemplus - umemplus % (2 * sa_alignment_max)
+ sa_alignment_max - umem);
void *vp = mem + offset;
small_t *p = vp;
@@ -90,15 +90,18 @@ void
freea (void *p)
{
/* Check argument. */
- if ((uintptr_t) p & (sa_alignment_max - 1))
+ uintptr_t u = (uintptr_t) p;
+ if (u & (sa_alignment_max - 1))
{
/* p was not the result of a malloca() call. Invalid argument. */
abort ();
}
/* Determine whether p was a non-NULL pointer returned by mmalloca(). */
- if ((uintptr_t) p & sa_alignment_max)
+ if (u & sa_alignment_max)
{
- void *mem = (char *) p - ((small_t *) p)[-1];
+ char *cp = p;
+ small_t *sp = p;
+ void *mem = cp - sp[-1];
free (mem);
}
}
--
2.41.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] malloca: pacify -Wcheri-provenance,
Paul Eggert <=