Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jul 2023 14:30:15 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 86c7368f2bce - main - rtld_malloc: add cp2op() helper
Message-ID:  <202307261430.36QEUFuV028432@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202307261430.36QEUFuV028432>