Stop potential memory leaks in dwarf CIE reader.
* dwarf.c (read_cie): Free allocated memory before returning with a failure result.
This commit is contained in:
parent
43cc6c3adb
commit
442a6ce858
3 changed files with 26 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2018-07-19 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* dwarf.c (read_cie): Free allocated memory before returning with
|
||||||
|
a failure result.
|
||||||
|
|
||||||
2018-07-16 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
2018-07-16 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||||
|
|
||||||
* readelf.c (get_note_type): Fix typo in NT_PPC_TM_CVSX note
|
* readelf.c (get_note_type): Fix typo in NT_PPC_TM_CVSX note
|
||||||
|
|
|
@ -315,6 +315,10 @@ looks like this:
|
||||||
a. Update the minor release number in bfd/version.m4.
|
a. Update the minor release number in bfd/version.m4.
|
||||||
b. Edit bfd/development.sh and set "development=false".
|
b. Edit bfd/development.sh and set "development=false".
|
||||||
c. Regenerate the configure files.
|
c. Regenerate the configure files.
|
||||||
|
c.1. Remove spurious autom4te.cache files:
|
||||||
|
|
||||||
|
find . -depth -name autom4te.cache -exec rm -r {} \;
|
||||||
|
|
||||||
d. Commit the updates along with a "this-is-the-2.XX.X-release"
|
d. Commit the updates along with a "this-is-the-2.XX.X-release"
|
||||||
note in all of the changelogs.
|
note in all of the changelogs.
|
||||||
e. Tag the branch with the new release number:
|
e. Tag the branch with the new release number:
|
||||||
|
@ -339,9 +343,6 @@ looks like this:
|
||||||
k. Clean up the source tree. (Use "git status" to find new
|
k. Clean up the source tree. (Use "git status" to find new
|
||||||
files, and remove them).
|
files, and remove them).
|
||||||
|
|
||||||
FIXME: The tarballs will contain spurious autom4te.cache
|
|
||||||
directories which could be removed to reduce their size.
|
|
||||||
|
|
||||||
4. [If paranoid - upload the tarballs to one of the FTP servers and
|
4. [If paranoid - upload the tarballs to one of the FTP servers and
|
||||||
ask people to test it before going on to step 5].
|
ask people to test it before going on to step 5].
|
||||||
|
|
||||||
|
@ -354,18 +355,17 @@ looks like this:
|
||||||
6. Upload the tarballs to sourceware.org:
|
6. Upload the tarballs to sourceware.org:
|
||||||
|
|
||||||
sftp sourceware.org
|
sftp sourceware.org
|
||||||
cd /ftp/pub/binutils/releases
|
cd /sourceware/ftp/pub/binutils/releases
|
||||||
put binutils-X.XX.X.tar.*
|
put binutils-X.XX.X.tar.*
|
||||||
chmod 644 binutils-X.XX.X.tar.*
|
chmod 644 binutils-X.XX.X.tar.*
|
||||||
quit
|
quit
|
||||||
|
|
||||||
FIXME: Should the signatures (created by the gnupload script in
|
It is OK to upload the signatures as well.
|
||||||
step 5) be uploaded as well ?
|
|
||||||
|
|
||||||
7. Update web pages. For sourceware.org:
|
7. Update web pages. For sourceware.org:
|
||||||
|
|
||||||
* Log on to sourceware.org
|
* Log on to sourceware.org
|
||||||
* Go /www/htdocs/binutils
|
* Go to /sourceware/www/sourceware/htdocs/binutils
|
||||||
* Edit index.html
|
* Edit index.html
|
||||||
|
|
||||||
For the www.gnu.org site you have to email webmasters@gnu.org
|
For the www.gnu.org site you have to email webmasters@gnu.org
|
||||||
|
@ -378,8 +378,8 @@ looks like this:
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Hi Everyone,
|
Hi Everyone,
|
||||||
|
|
||||||
We are pleased to announce that version 2.XX.X of the Binutils project
|
We are pleased to announce that version 2.XX.X of the GNU Binutils
|
||||||
sources have been released and are now available for download at:
|
project sources have been released and are now available for download at:
|
||||||
|
|
||||||
https://ftp.gnu.org/gnu/binutils
|
https://ftp.gnu.org/gnu/binutils
|
||||||
https://sourceware.org/pub/binutils/releases/
|
https://sourceware.org/pub/binutils/releases/
|
||||||
|
|
|
@ -7283,7 +7283,7 @@ read_cie (unsigned char *start, unsigned char *end,
|
||||||
if (start == end)
|
if (start == end)
|
||||||
{
|
{
|
||||||
warn (_("No terminator for augmentation name\n"));
|
warn (_("No terminator for augmentation name\n"));
|
||||||
return start;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp (fc->augmentation, "eh") == 0)
|
if (strcmp (fc->augmentation, "eh") == 0)
|
||||||
|
@ -7295,7 +7295,7 @@ read_cie (unsigned char *start, unsigned char *end,
|
||||||
if (fc->ptr_size < 1 || fc->ptr_size > 8)
|
if (fc->ptr_size < 1 || fc->ptr_size > 8)
|
||||||
{
|
{
|
||||||
warn (_("Invalid pointer size (%d) in CIE data\n"), fc->ptr_size);
|
warn (_("Invalid pointer size (%d) in CIE data\n"), fc->ptr_size);
|
||||||
return end;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
GET (fc->segment_size, 1);
|
GET (fc->segment_size, 1);
|
||||||
|
@ -7303,7 +7303,7 @@ read_cie (unsigned char *start, unsigned char *end,
|
||||||
if (fc->segment_size > 8 || fc->segment_size + fc->ptr_size > 8)
|
if (fc->segment_size > 8 || fc->segment_size + fc->ptr_size > 8)
|
||||||
{
|
{
|
||||||
warn (_("Invalid segment size (%d) in CIE data\n"), fc->segment_size);
|
warn (_("Invalid segment size (%d) in CIE data\n"), fc->segment_size);
|
||||||
return end;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
eh_addr_size = fc->ptr_size;
|
eh_addr_size = fc->ptr_size;
|
||||||
|
@ -7313,8 +7313,10 @@ read_cie (unsigned char *start, unsigned char *end,
|
||||||
fc->ptr_size = eh_addr_size;
|
fc->ptr_size = eh_addr_size;
|
||||||
fc->segment_size = 0;
|
fc->segment_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ_ULEB (fc->code_factor);
|
READ_ULEB (fc->code_factor);
|
||||||
READ_SLEB (fc->data_factor);
|
READ_SLEB (fc->data_factor);
|
||||||
|
|
||||||
if (version == 1)
|
if (version == 1)
|
||||||
{
|
{
|
||||||
GET (fc->ra, 1);
|
GET (fc->ra, 1);
|
||||||
|
@ -7334,7 +7336,7 @@ read_cie (unsigned char *start, unsigned char *end,
|
||||||
warn (_("Augmentation data too long: 0x%s, expected at most %#lx\n"),
|
warn (_("Augmentation data too long: 0x%s, expected at most %#lx\n"),
|
||||||
dwarf_vmatoa ("x", augmentation_data_len),
|
dwarf_vmatoa ("x", augmentation_data_len),
|
||||||
(unsigned long) (end - start));
|
(unsigned long) (end - start));
|
||||||
return end;
|
goto fail;
|
||||||
}
|
}
|
||||||
start += augmentation_data_len;
|
start += augmentation_data_len;
|
||||||
}
|
}
|
||||||
|
@ -7376,6 +7378,12 @@ read_cie (unsigned char *start, unsigned char *end,
|
||||||
*p_aug = augmentation_data;
|
*p_aug = augmentation_data;
|
||||||
}
|
}
|
||||||
return start;
|
return start;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
free (fc->col_offset);
|
||||||
|
free (fc->col_type);
|
||||||
|
free (fc);
|
||||||
|
return end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prints out the contents on the DATA array formatted as unsigned bytes.
|
/* Prints out the contents on the DATA array formatted as unsigned bytes.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue