All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] objtool: prevent memory leak in error paths
@ 2021-04-13 20:45 Muhammad Usama Anjum
  2021-04-14  7:21 ` Peter Zijlstra
  2021-04-14  8:47 ` Dan Carpenter
  0 siblings, 2 replies; 5+ messages in thread
From: Muhammad Usama Anjum @ 2021-04-13 20:45 UTC (permalink / raw)
  To: Josh Poimboeuf, Peter Zijlstra, Ingo Molnar, Miroslav Benes,
	Borislav Petkov, open list
  Cc: musamaanjum, kernel-janitors, dan.carpenter, colin.king

Memory allocated by sym and sym->name isn't being freed if some error
occurs in elf_create_undef_symbol(). Free the sym and sym->name if error
is detected before returning NULL.

Addresses-Coverity: ("Prevent memory leak")
Fixes: 2f2f7e47f052 ("objtool: Add elf_create_undef_symbol()")
Signed-off-by: Muhammad Usama Anjum <musamaanjum@gmail.com>
---
Only build has been tested.

tools/objtool/elf.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index d08f5f3670f8..17ee265a6c6b 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -733,7 +733,7 @@ struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
 
 	sym->sym.st_name = elf_add_string(elf, NULL, sym->name);
 	if (sym->sym.st_name == -1)
-		return NULL;
+		goto err;
 
 	sym->sym.st_info = GELF_ST_INFO(STB_GLOBAL, STT_NOTYPE);
 	// st_other 0
@@ -744,19 +744,19 @@ struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
 	symtab = find_section_by_name(elf, ".symtab");
 	if (!symtab) {
 		WARN("can't find .symtab");
-		return NULL;
+		goto err;
 	}
 
 	s = elf_getscn(elf->elf, symtab->idx);
 	if (!s) {
 		WARN_ELF("elf_getscn");
-		return NULL;
+		goto err;
 	}
 
 	data = elf_newdata(s);
 	if (!data) {
 		WARN_ELF("elf_newdata");
-		return NULL;
+		goto err;
 	}
 
 	data->d_buf = &sym->sym;
@@ -773,6 +773,10 @@ struct symbol *elf_create_undef_symbol(struct elf *elf, const char *name)
 	elf_add_symbol(elf, sym);
 
 	return sym;
+err:
+	free(sym->name);
+	free(sym);
+	return NULL;
 }
 
 struct section *elf_create_section(struct elf *elf, const char *name,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-04-19 17:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-13 20:45 [PATCH] objtool: prevent memory leak in error paths Muhammad Usama Anjum
2021-04-14  7:21 ` Peter Zijlstra
2021-04-14  8:47 ` Dan Carpenter
2021-04-15  7:24   ` Peter Zijlstra
2021-04-19 17:15     ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.