Our ACPI namerefs are pointers to the byte structures for ACPI names.
authorpatrick <patrick@openbsd.org>
Wed, 10 Mar 2021 21:49:55 +0000 (21:49 +0000)
committerpatrick <patrick@openbsd.org>
Wed, 10 Mar 2021 21:49:55 +0000 (21:49 +0000)
commitabe2aacc6845fd5ce80896a50e770d4116e9f80c
tree9b0c04e47d2a9993779e199375a4da10587029ef
parent80e855d93558c509b4b5abde845378edca8532aa
Our ACPI namerefs are pointers to the byte structures for ACPI names.
These are not in a printable format, hence printing them as string is
wrong.  Additionally, aml_searchrel()/aml_searchname() expect the name
to be passed in a printable format as well.  Passing a nameref can lead
to an out-of-bounds read, and the comparison can fail.  Hence make sure
that namerefs are passed to aml_getname() first, which returns printable
strings.  Note that aml_getname() uses a static buffer, so there are a
few restrictions how the string can be used.

ok kettenis@
sys/dev/acpi/acpiprt.c
sys/dev/acpi/acpipwrres.c
sys/dev/acpi/acpitz.c
sys/dev/acpi/atk0110.c
sys/dev/acpi/dsdt.c
sys/dev/acpi/dsdt.h