From: Simon Glass Date: Tue, 12 Jun 2018 06:04:56 +0000 (-0600) Subject: console: Fix handling of NULL global_data X-Git-Tag: v2018.07-rc2~18 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=af880e247d502844e01219995cbdbee4b3e6d204;p=u-boot console: Fix handling of NULL global_data Both putc() and puts() can be called before global_data is set up. Some of the code paths don't handle this correctly. Add an explicit test before any member is accessed. Reported-by: Coverity (CID: 169030) Signed-off-by: Simon Glass Reviewed-by: Heinrich Schuchardt --- diff --git a/common/console.c b/common/console.c index 2688af56e1..2ba33dc574 100644 --- a/common/console.c +++ b/common/console.c @@ -502,8 +502,10 @@ void putc(const char c) return; } #endif + if (!gd) + return; #ifdef CONFIG_CONSOLE_RECORD - if (gd && (gd->flags & GD_FLG_RECORD) && gd->console_out.start) + if ((gd->flags & GD_FLG_RECORD) && gd->console_out.start) membuff_putbyte(&gd->console_out, c); #endif #ifdef CONFIG_SILENT_CONSOLE @@ -541,8 +543,10 @@ void puts(const char *s) return; } #endif + if (!gd) + return; #ifdef CONFIG_CONSOLE_RECORD - if (gd && (gd->flags & GD_FLG_RECORD) && gd->console_out.start) + if ((gd->flags & GD_FLG_RECORD) && gd->console_out.start) membuff_put(&gd->console_out, s, strlen(s)); #endif #ifdef CONFIG_SILENT_CONSOLE