From c80e8080c38c1630edcba1fce834333b31b76c16 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Thu, 31 Aug 2023 11:58:42 -0700 Subject: [PATCH] elfparser: ensure returned string is owned by GLib Technically, it's very likely that this will fall through to free() anyway, but there aren't necessarily guarantees of that yet afaik. --- contrib/elfparser/rust-demangle.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/contrib/elfparser/rust-demangle.c b/contrib/elfparser/rust-demangle.c index 043b4e72..48ef93b4 100644 --- a/contrib/elfparser/rust-demangle.c +++ b/contrib/elfparser/rust-demangle.c @@ -1251,6 +1251,7 @@ str_buf_demangle_callback(const char *data, size_t len, void *opaque) { char *sysprof_rust_demangle(const char *mangled, int flags) { struct str_buf out; + char *ret; out.ptr = NULL; out.len = 0; @@ -1267,7 +1268,11 @@ char *sysprof_rust_demangle(const char *mangled, int flags) { } str_buf_append(&out, "\0", 1); - return out.ptr; + + ret = g_strdup(out.ptr); + free(out.ptr); + + return ret; } #pragma GCC diagnostic pop