diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2019-09-17 06:57:00 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2019-09-24 14:06:32 +0100 |
commit | 2ca5b4ab8a02b17ac4ee4a6f8474c288cb3fbef9 (patch) | |
tree | 3411d9d3f44258b642b7f606430a8b4948d19163 /gprof/Makefile.am | |
parent | 6c1ab5fe1eec2cfc6d28668a73964a48b507a25b (diff) | |
download | gdb-2ca5b4ab8a02b17ac4ee4a6f8474c288cb3fbef9.zip gdb-2ca5b4ab8a02b17ac4ee4a6f8474c288cb3fbef9.tar.gz gdb-2ca5b4ab8a02b17ac4ee4a6f8474c288cb3fbef9.tar.bz2 |
libctf: make ctf_dump not crash on OOM
ctf_dump calls ctf_str_append extensively but never checks to see if it
returns NULL (on OOM). If it ever does, we truncate the string we are
appending to and leak it!
Instead, create a variant of ctf_str_append that returns the *original
string* on OOM, and use it in ctf-dump. It is far better to omit a tiny
piece of a dump on OOM than to omit a bigger piece, and it is also
better to do this in what is after all purely debugging code than it is
to uglify ctf-dump.c with huge numbers of checks for the out-of-memory
case. Slightly truncated debugging output is better than no debugging
output at all and an out-of-memory message.
New in v4.
libctf/
* ctf-impl.h (ctf_str_append_noerr): Declare.
* ctf-util.c (ctf_str_append_noerr): Define in terms of
ctf_str_append.
* ctf-dump.c (str_append): New, call it.
(ctf_dump_format_type): Use str_append, not ctf_str_append.
(ctf_dump_label): Likewise.
(ctf_dump_objts): Likewise.
(ctf_dump_funcs): Likewise.
(ctf_dump_var): Likewise.
(ctf_dump_member): Likewise.
(ctf_dump_type): Likewise.
(ctf_dump): Likewise.
Diffstat (limited to 'gprof/Makefile.am')
0 files changed, 0 insertions, 0 deletions