git: 1c1460747efd - stable/13 - Fix possibly unitialized variables in __cxa_demangle_gnu3()
Dimitry Andric
dim at FreeBSD.org
Wed Feb 24 19:41:21 UTC 2021
The branch stable/13 has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=1c1460747efd44eb74762b960883656b56134e30
commit 1c1460747efd44eb74762b960883656b56134e30
Author: Dimitry Andric <dim at FreeBSD.org>
AuthorDate: 2021-02-22 20:01:09 +0000
Commit: Dimitry Andric <dim at FreeBSD.org>
CommitDate: 2021-02-24 19:39:15 +0000
Fix possibly unitialized variables in __cxa_demangle_gnu3()
After 0ee0dbfb0d26cf4bc37f24f12e76c7f532b0f368 where I imported a more
recent libcxxrt snapshot, the variables 'rtn' and 'has_ret' could in
some cases be used while still uninitialized. Most obviously this would
lead to a jemalloc complaint about a bad free(), aborting the program.
Fix this by initializing a bunch variables in their declarations. This
change has also been sent upstream, with some additional changes to be
used in their testing framework.
PR: 253226
(cherry picked from commit d149877758f162f0c777e7760164bf2c1f7a1bc1)
---
contrib/libcxxrt/libelftc_dem_gnu3.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/contrib/libcxxrt/libelftc_dem_gnu3.c b/contrib/libcxxrt/libelftc_dem_gnu3.c
index 6e88f7b4bb4c..93e1c41fa034 100644
--- a/contrib/libcxxrt/libelftc_dem_gnu3.c
+++ b/contrib/libcxxrt/libelftc_dem_gnu3.c
@@ -538,8 +538,8 @@ __cxa_demangle_gnu3(const char *org)
struct type_delimit td;
ssize_t org_len;
unsigned int limit;
- char *rtn;
- bool has_ret, more_type;
+ char *rtn = NULL;
+ bool has_ret = false, more_type = false;
if (org == NULL)
return (NULL);
@@ -562,13 +562,9 @@ __cxa_demangle_gnu3(const char *org)
return (rtn);
}
-
if (!cpp_demangle_data_init(&ddata, org + 2))
return (NULL);
- rtn = NULL;
- has_ret = more_type = false;
-
if (!cpp_demangle_read_encoding(&ddata))
goto clean;
More information about the dev-commits-src-all
mailing list