SHA256
1
0
forked from pool/qemu
qemu/seabios_avoid_smbios_signature_string.patch

35 lines
1.2 KiB
Diff
Raw Normal View History

From 2e978dc652969f6a7089713d8f726dda23a98205 Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 27 Mar 2015 18:03:36 -0600
Subject: [PATCH] smbios: avoid having an arbitrary _SM_ string located in F
segment
The way the SMBIOS table is located is to search the F segment for
the byte sequence _SM_ located at the beginning of a paragragh.
It was found that SeaBIOS has a "_SM_" string contained within
the image which is not part of the SMBIOS table, and it was located
ahead of the actual SMBIOS table, causing obvious problems.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
src/fw/biostables.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/fw/biostables.c b/src/fw/biostables.c
index 50a891b..568f404 100644
--- a/src/fw/biostables.c
+++ b/src/fw/biostables.c
@@ -271,7 +271,8 @@ copy_smbios(void *pos)
if (SMBiosAddr)
return;
struct smbios_entry_point *p = pos;
- if (memcmp(p->anchor_string, "_SM_", 4))
+ // avoid storing the _SM_ string - it's problematic!
+ if (memcmp(p->anchor_string, "_SM", 3) || p->anchor_string[3] != '_' )
return;
if (checksum(pos, 0x10) != 0)
return;
--
1.9.0