Fix problems in CTF handling code exposed by the Coverity static analysis tool.

readelf	* readelf.c (parse_args): Silence potential warnings about a
	memory resource leak when allocating space for ctf option values.
	(dump_section_as_ctf): Fix typo checking dump_ctf_strtab_name
	variable.

libctf	* ctf-archive.c (ctf_arc_write): Avoid calling close twice on the
	same file descriptor.
This commit is contained in:
Nick Clifton 2020-07-22 16:07:48 +01:00
parent a7b4ff4f0a
commit df16e041de
4 changed files with 22 additions and 14 deletions

View file

@ -4827,12 +4827,15 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv)
request_dump (dumpdata, CTF_DUMP);
break;
case OPTION_CTF_SYMBOLS:
free (dump_ctf_symtab_name);
dump_ctf_symtab_name = strdup (optarg);
break;
case OPTION_CTF_STRINGS:
free (dump_ctf_strtab_name);
dump_ctf_strtab_name = strdup (optarg);
break;
case OPTION_CTF_PARENT:
free (dump_ctf_parent_name);
dump_ctf_parent_name = strdup (optarg);
break;
case OPTION_DYN_SYMS:
@ -14296,7 +14299,7 @@ dump_section_as_ctf (Elf_Internal_Shdr * section, Filedata * filedata)
symsectp = shdr_to_ctf_sect (&symsect, symtab_sec, filedata);
symsect.cts_data = symdata;
}
if (dump_ctf_strtab_name && dump_ctf_symtab_name[0] != 0)
if (dump_ctf_strtab_name && dump_ctf_strtab_name[0] != 0)
{
if ((strtab_sec = find_section (filedata, dump_ctf_strtab_name)) == NULL)
{