git: 86c7368f2bce - main - rtld_malloc: add cp2op() helper
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 26 Jul 2023 14:30:15 UTC
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=86c7368f2bcefeb257f7dc40e4296261b295a674 commit 86c7368f2bcefeb257f7dc40e4296261b295a674 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2023-07-22 04:24:03 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2023-07-26 14:24:18 +0000 rtld_malloc: add cp2op() helper converting user allocation address into overhead pointer Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D41150 --- libexec/rtld-elf/rtld_malloc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libexec/rtld-elf/rtld_malloc.c b/libexec/rtld-elf/rtld_malloc.c index 45d3f743e348..3437f638d339 100644 --- a/libexec/rtld-elf/rtld_malloc.c +++ b/libexec/rtld-elf/rtld_malloc.c @@ -106,6 +106,12 @@ static int pagesz; /* page size */ * increasing order. */ +static union overhead * +cp2op(void *cp) +{ + return ((union overhead *)((caddr_t)cp - sizeof(union overhead))); +} + void * __crt_malloc(size_t nbytes) { @@ -209,7 +215,7 @@ __crt_free(void *cp) if (cp == NULL) return; - op = (union overhead *)((caddr_t)cp - sizeof (union overhead)); + op = cp2op(cp); if (op->ov_magic != MAGIC) return; /* sanity */ size = op->ov_index; @@ -227,7 +233,7 @@ __crt_realloc(void *cp, size_t nbytes) if (cp == NULL) return (__crt_malloc(nbytes)); - op = (union overhead *)((caddr_t)cp - sizeof (union overhead)); + op = cp2op(cp); if (op->ov_magic != MAGIC) return (NULL); /* Double-free or bad argument */ i = op->ov_index;