Avoid `free(3)`ing invalid pointer

Fixes [Bug #17794]
This commit is contained in:
xtkoba 2021-04-29 23:53:55 +09:00 коммит произвёл Jeremy Evans
Родитель b7d01b0d1b
Коммит d795f494a8
1 изменённых файлов: 2 добавлений и 0 удалений

Просмотреть файл

@ -1699,6 +1699,7 @@ debug_info_read(DebugInfoReader *reader, int num_traces, void **traces,
static unsigned long static unsigned long
uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr) uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr)
{ {
*ptr = NULL;
#ifdef SUPPORT_COMPRESSED_DEBUG_LINE #ifdef SUPPORT_COMPRESSED_DEBUG_LINE
ElfW(Chdr) *chdr = (ElfW(Chdr) *)(file + shdr->sh_offset); ElfW(Chdr) *chdr = (ElfW(Chdr) *)(file + shdr->sh_offset);
unsigned long destsize = chdr->ch_size; unsigned long destsize = chdr->ch_size;
@ -1719,6 +1720,7 @@ uncompress_debug_section(ElfW(Shdr) *shdr, char *file, char **ptr)
fail: fail:
free(*ptr); free(*ptr);
*ptr = NULL;
#endif #endif
return 0; return 0;
} }