9323dd869d
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. |
||
---|---|---|
.. | ||
aclocal.m4 | ||
ChangeLog | ||
config.h.in | ||
configure | ||
configure.ac | ||
ctf-archive.c | ||
ctf-create.c | ||
ctf-decl.c | ||
ctf-decls.h | ||
ctf-dump.c | ||
ctf-endian.h | ||
ctf-error.c | ||
ctf-hash.c | ||
ctf-impl.h | ||
ctf-labels.c | ||
ctf-link.c | ||
ctf-lookup.c | ||
ctf-open-bfd.c | ||
ctf-open.c | ||
ctf-qsort_r.c | ||
ctf-string.c | ||
ctf-subr.c | ||
ctf-types.c | ||
ctf-util.c | ||
elf.h | ||
libctf.ver | ||
Makefile.am | ||
Makefile.in | ||
swap.h |