]> git.ipfire.org Git - u-boot.git/commitdiff
efi_selftest: do not cut off u16 strings when printing
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 22 Dec 2017 18:21:04 +0000 (19:21 +0100)
committerAlexander Graf <agraf@suse.de>
Mon, 22 Jan 2018 22:09:12 +0000 (23:09 +0100)
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

index 6a7fd20da5c51b008fd0794b07c96345c50225cc..963ed913db320187c598f79c5a9b8ad0733b04d2 100644 (file)
@@ -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;