From 5b9948140f97eceb47ba026d7bad6dfa2a3c483d Mon Sep 17 00:00:00 2001 From: Jacob Garber Date: Wed, 10 Jul 2019 11:44:45 -0600 Subject: [PATCH] console: Correct printing of hexadecimal integers Commit b19946cc62 (console: Remove support for printing extra bases) truncated the digits string to only print integers of up to base 16. However, that string was also used to print the leading 'x' or 'X' for hexadecimal integers and is now too short. Fix this to prevent an out of bounds read. Change-Id: Iab6470cc88f445f074cf7c0b675346b37f3f2375 Signed-off-by: Jacob Garber Found-by: Coverity CID 1402999 Reviewed-on: https://review.coreboot.org/c/coreboot/+/34211 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi Reviewed-by: HAOUAS Elyes Reviewed-by: Nico Huber Reviewed-by: Julius Werner --- src/console/vtxprintf.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/console/vtxprintf.c b/src/console/vtxprintf.c index b50f3987a5..848ad501ce 100644 --- a/src/console/vtxprintf.c +++ b/src/console/vtxprintf.c @@ -107,7 +107,10 @@ static int number(void (*tx_byte)(unsigned char byte, void *data), call_tx('0'), count++; else if (base == 16) { call_tx('0'), count++; - call_tx(digits[33]), count++; + if (type & LARGE) + call_tx('X'), count++; + else + call_tx('x'), count++; } } if (!(type & LEFT)) {