From e0abeaccefe78a0484f6cb8dbc71151c88c5f16d Mon Sep 17 00:00:00 2001
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
Date: Fri, 22 Dec 2017 19:21:04 +0100
Subject: [PATCH] efi_selftest: do not cut off u16 strings when printing

Device paths can be very long. Due to a limited output buffer
the output for device paths is cut off. We can avoid this by
directly calling the boottime service with the the device path
string.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
[agraf: Remove coloring code change]
Signed-off-by: Alexander Graf <agraf@suse.de>
---
 lib/efi_selftest/efi_selftest_console.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/efi_selftest/efi_selftest_console.c b/lib/efi_selftest/efi_selftest_console.c
index 6a7fd20da5..963ed913db 100644
--- a/lib/efi_selftest/efi_selftest_console.c
+++ b/lib/efi_selftest/efi_selftest_console.c
@@ -142,7 +142,7 @@ void efi_st_printf(const char *fmt, ...)
 	const char *c;
 	u16 *pos = buf;
 	const char *s;
-	const u16 *u;
+	u16 *u;
 
 	va_start(args, fmt);
 
@@ -188,9 +188,13 @@ void efi_st_printf(const char *fmt, ...)
 				/* u16 string */
 				case 's':
 					u = va_arg(args, u16*);
-					/* Ensure string fits into buffer */
-					for (; *u && pos < buf + 120; ++u)
-						*pos++ = *u;
+					if (pos > buf) {
+						*pos = 0;
+						con_out->output_string(con_out,
+								       buf);
+					}
+					con_out->output_string(con_out, u);
+					pos = buf;
 					break;
 				default:
 					--c;
-- 
2.39.5