]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
libctf: fix ref leak of names of newly-inserted non-root-visible types
authorNick Alcock <nick.alcock@oracle.com>
Mon, 29 Jul 2024 11:45:09 +0000 (12:45 +0100)
committerNick Alcock <nick.alcock@oracle.com>
Thu, 1 Aug 2024 14:46:03 +0000 (15:46 +0100)
commit8a6764d35e5c15d78de8aef8f27af3eefd9d7544
tree05237b2bd06dde54ac9186ce2a009f94055748bf
parentd9ddfab9be2c25e049d1d42775db600d45eee31b
libctf: fix ref leak of names of newly-inserted non-root-visible types

A bug in ctf_dtd_delete led to refs in the string table to the
names of non-root-visible types not being removed when the DTD
was.  This seems harmless, but actually it would lead to a write
down a pointer into freed memory if such a type was ctf_rollback()ed
over and then the dict was serialized (updating all the refs as the
strtab was serialized in turn).

Bug introduced in commit fe4c2d55634c700ba527ac4183e05c66e9f93c62
("libctf: create: non-root-visible types should not appear in name tables")
which is included in binutils 2.35.

libctf/
* ctf-create.c (ctf_dtd_delete): Remove refs for all types
with names, not just root-visible ones.
libctf/ctf-create.c