From 7c433aab45b4adcfcdb117bdfa0a8c2cdcabc1ef Mon Sep 17 00:00:00 2001 From: David Hendricks Date: Thu, 13 Aug 2015 15:51:00 -0700 Subject: [PATCH] edid: Memset output earlier in decode_edid() This ensures the output buffer is initialized before exiting decode_edid() so that if the return value is ignored in higher-level logic (like when dealing with external displays) we don't leave the struct filled with garbage. BUG=chrome-os-partner:42946 BRANCH=firmware-veyron TEST=none Change-Id: I697436fffadc7dd3af239436061975165a97ec8c Signed-off-by: David Hendricks Reviewed-on: https://chromium-review.googlesource.com/293607 --- src/lib/edid.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/edid.c b/src/lib/edid.c index 78e4350097..ecdcfbf39f 100644 --- a/src/lib/edid.c +++ b/src/lib/edid.c @@ -1048,12 +1048,13 @@ int decode_edid(unsigned char *edid, int size, struct edid *out) dump_breakdown(edid); + memset(out, 0, sizeof(*out)); + if (!edid || memcmp(edid, "\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00", 8)) { printk(BIOS_SPEW, "No header found\n"); return 1; } - memset(out, 0, sizeof(*out)); if (manufacturer_name(edid + 0x08)) c.manufacturer_name_well_formed = 1;