libctf: don't dereference out-of-bounds locations in the qualifier hashtab
authorNick Alcock <nick.alcock@oracle.com>
Thu, 25 Mar 2021 16:32:46 +0000 (16:32 +0000)
committerNick Alcock <nick.alcock@oracle.com>
Thu, 25 Mar 2021 16:32:49 +0000 (16:32 +0000)
commit0bd65ce30a869559251a34da105fbe45df5a85b3
tree6f4d610cb1ea5dafff6200641bdea29f0c961a98
parent5226ef61131c1dbb58bcf4ff10ece4312690bc82
libctf: don't dereference out-of-bounds locations in the qualifier hashtab

isqualifier, which is used by ctf_lookup_by_name to figure out if a
given word in a type name is a qualifier, takes the address of a
possibly out-of-bounds location before checking its bounds.

In any reasonable compiler this will just lead to a harmless address
computation that is then discarded if out-of-bounds, but it's still
undefined behaviour and the sanitizer rightly complains.

libctf/ChangeLog
2021-03-25  Nick Alcock  <nick.alcock@oracle.com>

PR libctf/27628
* ctf-lookup.c (isqualifier): Don't dereference out-of-bounds
qhash values.
libctf/ChangeLog
libctf/ctf-lookup.c