Commit bb89a79a authored by John Levon's avatar John Levon Committed by Rafael J. Wysocki

ACPICA: utilities: fix sprintf()

This contains changes for the following ACPICA commit ID's:
8f99a6ccd3b8e5c3d3d68c53fdbb054c2477eeb4
d30647af53abd334cbcf6362387464ea647bac9e
d3c5fb4cf5b2880d789c987eb847fc3de3774abc

On 32-bit, the provided sprintf() is non-functional: with a size of
ACPI_UINT32_MAX, String + Size will wrap, meaning End < Start, and
acpi_ut_bound_string_output() will never output anything as a result.

The symptom we saw of this was acpixtract failing to output anything.

Link: https://github.com/acpica/acpica/commit/8f99a6cc
Link: https://github.com/acpica/acpica/commit/d30647af
Link: https://github.com/acpica/acpica/commit/d3c5fb4cSigned-off-by: default avatarMSathieu <18145111+MSathieu@users.noreply.github.com>
Signed-off-by: default avatarJohn Levon <john.levon@joyent.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarErik Kaneda <erik.kaneda@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent f2173c3e
...@@ -332,7 +332,12 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args) ...@@ -332,7 +332,12 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args)
int i; int i;
pos = string; pos = string;
end = string + size;
if (size != ACPI_UINT32_MAX) {
end = string + size;
} else {
end = ACPI_CAST_PTR(char, ACPI_UINT32_MAX);
}
for (; *format; ++format) { for (; *format; ++format) {
if (*format != '%') { if (*format != '%') {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment