Files
qemu-spoof/patches/0014-fwcfg-signatures.patch
T

35 lines
1.4 KiB
Diff

qemu-spoof: fw_cfg selector + DMA signatures
FW_CFG_SIGNATURE "QEMU" -> spoof_fwcfg_sig(); the DMA signature ("QEMU CFG") ->
spoof_fwcfg_dma_sig(). Inert unless a spoof-seed is set.
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index 1d7d835..3b29e96 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -23,6 +23,7 @@
*/
#include "qemu/osdep.h"
+#include "hw/misc/spoof.h"
#include "qemu/datadir.h"
#include "system/system.h"
#include "system/dma.h"
@@ -442,7 +443,7 @@ static uint64_t fw_cfg_dma_mem_read(void *opaque, hwaddr addr,
unsigned size)
{
/* Return a signature value (and handle various read sizes) */
- return extract64(FW_CFG_DMA_SIGNATURE, (8 - addr - size) * 8, size * 8);
+ return extract64(spoof_fwcfg_dma_sig(FW_CFG_DMA_SIGNATURE), (8 - addr - size) * 8, size * 8);
}
static void fw_cfg_dma_mem_write(void *opaque, hwaddr addr,
@@ -1002,7 +1003,7 @@ static void fw_cfg_common_realize(DeviceState *dev, Error **errp)
return;
}
- fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)"QEMU", 4);
+ fw_cfg_add_bytes(s, FW_CFG_SIGNATURE, (char *)spoof_fwcfg_sig("QEMU"), 4);
fw_cfg_add_bytes(s, FW_CFG_UUID, &qemu_uuid, 16);
fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)!machine->enable_graphics);
fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)(machine->boot_config.has_menu && machine->boot_config.menu));