[PATCH 1/1] tools/winedump : Avoid potential memory leaks
David Kahurani
k.kahurani at gmail.com
Sat Oct 9 06:56:26 CDT 2021
ct->expression gets overwritten with each call to strmake. Save
its address in a temporary variable inorder to free it later
on and avoid a memory leak
---
tools/winedump/msmangle.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/winedump/msmangle.c b/tools/winedump/msmangle.c
index cf26a07..5ccf430 100644
--- a/tools/winedump/msmangle.c
+++ b/tools/winedump/msmangle.c
@@ -533,7 +533,6 @@ static char *demangle_datatype (char **str, compound_type *ct,
if (*iter == '6')
{
int sub_expressions = 0;
- /* FIXME: there are tons of memory leaks here */
/* FIXME: this is still broken in some cases and it has to be
* merged with the function prototype parsing above...
*/
@@ -550,15 +549,21 @@ static char *demangle_datatype (char **str, compound_type *ct,
if (!demangle_datatype (&iter, &sub_ct, sym))
return NULL;
if (sub_expressions)
+ char *tmp = ct->expression;
ct->expression = strmake( "%s, %s", ct->expression, sub_ct.expression );
+ free(tmp);
else
+ char *tmp = ct->expression;
ct->expression = strmake( "%s%s", ct->expression, sub_ct.expression );
+ free(tmp);
while (*iter == '@') iter++;
sub_expressions++;
}
} else while (*iter == '@') iter++;
iter++;
+ char *tmp = ct->expression;
ct->expression = strmake( "%s)", ct->expression );
+ free(tmp);
}
else
return NULL;
--
2.33.0
More information about the wine-devel
mailing list