35 lines
1.4 KiB
Diff
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));
|