git: 8e231b6ae016 - stable/15 - rtld: fix leak in get_program_var_addr() on the error path
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 31 Oct 2026 03:18:54 UTC
The branch stable/15 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=8e231b6ae0168f91a072402d02df39f4a0daf70d
commit 8e231b6ae0168f91a072402d02df39f4a0daf70d
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-25 15:28:14 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-10-31 03:15:22 +0000
rtld: fix leak in get_program_var_addr() on the error path
(cherry picked from commit 91d8163803b4fa25e51afe1209d0f5c30c603b93)
---
libexec/rtld-elf/rtld.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index b04f0bab8f3a..2ceb27613873 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -4775,8 +4775,9 @@ get_program_var_addr(const char *name, RtldLockState *lockstate)
symlook_init(&req, name);
req.lockstate = lockstate;
donelist_init(&donelist, NULL);
+ res = NULL;
if (symlook_global(&req, &donelist) != 0)
- return (NULL);
+ goto out;
if (ELF_ST_TYPE(req.sym_out->st_info) == STT_FUNC)
res = (const void **)make_function_pointer(req.sym_out,
req.defobj_out);
@@ -4786,6 +4787,7 @@ get_program_var_addr(const char *name, RtldLockState *lockstate)
else
res = (const void **)(req.defobj_out->relocbase +
req.sym_out->st_value);
+out:
donelist_free(&donelist);
return (res);
}