[PATCH] dbghelp: Fix memory leak on error path in dwarf2_read_range (cppcheck)
Alex Henrie
alexhenrie24 at gmail.com
Mon Dec 20 23:02:16 CST 2021
Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
dlls/dbghelp/dwarf.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 7515e540778..e086de1565e 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -1289,6 +1289,7 @@ static struct addr_range* dwarf2_get_ranges(const dwarf2_debug_info_t* di, unsig
{
struct attribute range;
struct addr_range* ranges;
+ struct addr_range* new_ranges;
if (dwarf2_find_attribute(di, DW_AT_ranges, &range))
{
@@ -1312,8 +1313,13 @@ static struct addr_range* dwarf2_get_ranges(const dwarf2_debug_info_t* di, unsig
if (*num_ranges >= alloc)
{
alloc *= 2;
- ranges = realloc(ranges, sizeof(struct addr_range) * alloc);
- if (!ranges) return NULL;
+ new_ranges = realloc(ranges, sizeof(struct addr_range) * alloc);
+ if (!new_ranges)
+ {
+ free(ranges);
+ return NULL;
+ }
+ ranges = new_ranges;
}
ranges[*num_ranges].low = di->unit_ctx->compiland->address + low;
ranges[*num_ranges].high = di->unit_ctx->compiland->address + high;
--
2.34.1
More information about the wine-devel
mailing list