From d4d40c64e102d99acf63b673af4c7e41f10b4de9 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Thu, 9 Nov 2023 15:04:58 -0600 Subject: acpi/acpigen: Fix buffer length in acpigen_write_name_unicode() The buffer length is in bytes, and since we are converting from ASCII to UTF-16, the value written needs to be 2x the string length + null terminator. TEST=build/boot google skyrim (frostflow), dump acpi and check bytecode for correct buffer length preceding unicode strings. Change-Id: Id322e3ff457ca1c92c55125224ca6cfab8762a84 Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/78977 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber Reviewed-by: Paul Menzel Reviewed-by: Felix Held --- src/acpi/acpigen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/acpi') diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c index ea3ef200a3..b2db19d249 100644 --- a/src/acpi/acpigen.c +++ b/src/acpi/acpigen.c @@ -185,7 +185,7 @@ void acpigen_write_name_unicode(const char *name, const char *string) acpigen_write_name(name); acpigen_emit_byte(BUFFER_OP); acpigen_write_len_f(); - acpigen_write_integer(len); + acpigen_write_integer(2 * len); for (size_t i = 0; i < len; i++) { const signed char c = string[i]; /* Simple ASCII to UTF-16 conversion, replace non ASCII characters */ -- cgit v1.2.3