mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 05:10:51 +07:00
binfmt_elf: fix corner case kfree of uninitialized data
If elf_core_dump() is called and fill_note_info() fails in the kmalloc() then it returns 0 but has not yet initialised all the needed fields. As a result we do a kfree(randomness) after correctly skipping the thread data. [akpm@linux-foundation.org: checkpatch fixes] Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
323c1260ba
commit
6899e92d65
@ -1601,8 +1601,10 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
|
|||||||
info->thread = NULL;
|
info->thread = NULL;
|
||||||
|
|
||||||
psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL);
|
psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL);
|
||||||
if (psinfo == NULL)
|
if (psinfo == NULL) {
|
||||||
|
info->psinfo.data = NULL; /* So we don't free this wrongly */
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
|
fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user