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:
parent
a7b4ff4f0a
commit
df16e041de
4 changed files with 22 additions and 14 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2020-07-22 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2020-07-21 Nick Clifton <nickc@redhat.com>
|
2020-07-21 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/sv.po: Updated Swedish translation.
|
* po/sv.po: Updated Swedish translation.
|
||||||
|
|
|
@ -4827,12 +4827,15 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv)
|
||||||
request_dump (dumpdata, CTF_DUMP);
|
request_dump (dumpdata, CTF_DUMP);
|
||||||
break;
|
break;
|
||||||
case OPTION_CTF_SYMBOLS:
|
case OPTION_CTF_SYMBOLS:
|
||||||
|
free (dump_ctf_symtab_name);
|
||||||
dump_ctf_symtab_name = strdup (optarg);
|
dump_ctf_symtab_name = strdup (optarg);
|
||||||
break;
|
break;
|
||||||
case OPTION_CTF_STRINGS:
|
case OPTION_CTF_STRINGS:
|
||||||
|
free (dump_ctf_strtab_name);
|
||||||
dump_ctf_strtab_name = strdup (optarg);
|
dump_ctf_strtab_name = strdup (optarg);
|
||||||
break;
|
break;
|
||||||
case OPTION_CTF_PARENT:
|
case OPTION_CTF_PARENT:
|
||||||
|
free (dump_ctf_parent_name);
|
||||||
dump_ctf_parent_name = strdup (optarg);
|
dump_ctf_parent_name = strdup (optarg);
|
||||||
break;
|
break;
|
||||||
case OPTION_DYN_SYMS:
|
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);
|
symsectp = shdr_to_ctf_sect (&symsect, symtab_sec, filedata);
|
||||||
symsect.cts_data = symdata;
|
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)
|
if ((strtab_sec = find_section (filedata, dump_ctf_strtab_name)) == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2020-07-22 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* ctf-archive.c (ctf_arc_write): Avoid calling close twice on the
|
||||||
|
same file descriptor.
|
||||||
|
|
||||||
2020-07-04 Nick Clifton <nickc@redhat.com>
|
2020-07-04 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
Binutils 2.35 branch created.
|
Binutils 2.35 branch created.
|
||||||
|
|
|
@ -228,23 +228,16 @@ ctf_arc_write (const char *file, ctf_file_t ** ctf_files, size_t ctf_file_cnt,
|
||||||
|
|
||||||
err = ctf_arc_write_fd (fd, ctf_files, ctf_file_cnt, names, threshold);
|
err = ctf_arc_write_fd (fd, ctf_files, ctf_file_cnt, names, threshold);
|
||||||
if (err)
|
if (err)
|
||||||
goto err;
|
goto err_close;
|
||||||
|
|
||||||
if ((err = close (fd)) < 0)
|
if ((err = close (fd)) < 0)
|
||||||
{
|
|
||||||
ctf_dprintf ("ctf_arc_write(): Cannot close after writing to archive: "
|
ctf_dprintf ("ctf_arc_write(): Cannot close after writing to archive: "
|
||||||
"%s\n", strerror (errno));
|
"%s\n", strerror (errno));
|
||||||
goto err_close;
|
goto err;
|
||||||
}
|
|
||||||
|
|
||||||
err:
|
|
||||||
close (fd);
|
|
||||||
if (err < 0)
|
|
||||||
unlink (file);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
|
|
||||||
err_close:
|
err_close:
|
||||||
|
(void) close (fd);
|
||||||
|
err:
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
unlink (file);
|
unlink (file);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue