Skip to content

Commit

Permalink
ACPICA: utilities: fix sprintf()
Browse files Browse the repository at this point in the history
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: acpica/acpica@8f99a6cc
Link: acpica/acpica@d30647af
Link: acpica/acpica@d3c5fb4c
Signed-off-by: MSathieu <[email protected]>
Signed-off-by: John Levon <[email protected]>
Signed-off-by: Bob Moore <[email protected]>
Signed-off-by: Erik Kaneda <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
  • Loading branch information
John Levon authored and rafaeljw committed Mar 30, 2020
1 parent f2173c3 commit bb89a79
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/acpi/acpica/utprint.c
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,12 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args)
int i;

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) {
if (*format != '%') {
Expand Down

0 comments on commit bb89a79

Please sign in to comment.