From 29445dc44ee6bfb2617443e0faa985a93d9272f2 Mon Sep 17 00:00:00 2001 From: Zhuo-Hao Lee Date: Wed, 24 Dec 2014 11:13:34 +0800 Subject: [PATCH] device/oprom/realmode/x86: Fix memory corruption The length of the memcpy is incorrect and this will cause the destination buffer to corrupt the following 2 bytes of data. BUG=none BRANCH=All TEST=build and boot on rambi, system boot up without error Change-Id: I96adf2555b01aa35bb38a2e0f221fc2b2e87a41b Signed-off-by: Zhuo-Hao Lee Reviewed-on: https://chromium-review.googlesource.com/237510 Reviewed-by: Ryan Lin Reviewed-by: Duncan Laurie [Remove usage of macro `FIELD_SIZEOF(t, f)`.] Signed-off-by: Paul Menzel Reviewed-on: http://review.coreboot.org/8227 Reviewed-by: Alexandru Gagniuc Tested-by: build bot (Jenkins) --- src/device/oprom/realmode/x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/device/oprom/realmode/x86.c b/src/device/oprom/realmode/x86.c index fc3c40c789..461cb06541 100644 --- a/src/device/oprom/realmode/x86.c +++ b/src/device/oprom/realmode/x86.c @@ -233,7 +233,7 @@ static u8 vbe_get_mode_info(vbe_mode_info_t * mi) u16 buffer_adr = ((unsigned long)buffer) & 0xffff; realmode_interrupt(0x10, VESA_GET_MODE_INFO, 0x0000, mi->video_mode, 0x0000, buffer_seg, buffer_adr); - memcpy(mi->mode_info_block, buffer, sizeof(vbe_mode_info_t)); + memcpy(mi->mode_info_block, buffer, sizeof(mi->mode_info_block)); mode_info_valid = 1; return 0; }