Takashi Iwai 132771
From 433b7cd1e702b0918ef90cbf06c3da24313625d2 Mon Sep 17 00:00:00 2001
Takashi Iwai 132771
From: Johan Hovold <johan@kernel.org>
Takashi Iwai 132771
Date: Wed, 1 Dec 2021 14:25:27 +0100
Takashi Iwai 132771
Subject: [PATCH] firmware: qemu_fw_cfg: fix sysfs information leak
Takashi Iwai 132771
Git-commit: 433b7cd1e702b0918ef90cbf06c3da24313625d2
Takashi Iwai 8f947a
Alt-commit: 1b656e9aad7f4886ed466094d1dc5ee4dd900d20
Takashi Iwai 132771
Patch-mainline: v5.17-rc1
Takashi Iwai 132771
References: git-fixes
Takashi Iwai 132771
Takashi Iwai 132771
Make sure to always NUL-terminate file names retrieved from the firmware
Takashi Iwai 132771
to avoid accessing data beyond the entry slab buffer and exposing it
Takashi Iwai 132771
through sysfs in case the firmware data is corrupt.
Takashi Iwai 132771
Takashi Iwai 132771
Fixes: 75f3e8e47f38 ("firmware: introduce sysfs driver for QEMU's fw_cfg device")
Takashi Iwai 132771
Cc: stable@vger.kernel.org      # 4.6
Takashi Iwai 132771
Cc: Gabriel Somlo <somlo@cmu.edu>
Takashi Iwai 132771
Signed-off-by: Johan Hovold <johan@kernel.org>
Takashi Iwai 132771
Link: https://lore.kernel.org/r/20211201132528.30025-4-johan@kernel.org
Takashi Iwai 132771
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Takashi Iwai 132771
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 132771
Takashi Iwai 132771
---
Takashi Iwai 132771
 drivers/firmware/qemu_fw_cfg.c | 2 +-
Takashi Iwai 132771
 1 file changed, 1 insertion(+), 1 deletion(-)
Takashi Iwai 132771
Takashi Iwai 132771
diff --git a/drivers/firmware/qemu_fw_cfg.c b/drivers/firmware/qemu_fw_cfg.c
Takashi Iwai 132771
index ccb7ed62452f..f08e056ed0ae 100644
Takashi Iwai 132771
--- a/drivers/firmware/qemu_fw_cfg.c
Takashi Iwai 132771
+++ b/drivers/firmware/qemu_fw_cfg.c
Takashi Iwai 132771
@@ -598,7 +598,7 @@ static int fw_cfg_register_file(const struct fw_cfg_file *f)
Takashi Iwai 132771
 	/* set file entry information */
Takashi Iwai 132771
 	entry->size = be32_to_cpu(f->size);
Takashi Iwai 132771
 	entry->select = be16_to_cpu(f->select);
Takashi Iwai 132771
-	memcpy(entry->name, f->name, FW_CFG_MAX_FILE_PATH);
Takashi Iwai 132771
+	strscpy(entry->name, f->name, FW_CFG_MAX_FILE_PATH);
Takashi Iwai 132771
 
Takashi Iwai 132771
 	/* register entry under "/sys/firmware/qemu_fw_cfg/by_key/" */
Takashi Iwai 132771
 	err = kobject_init_and_add(&entry->kobj, &fw_cfg_sysfs_entry_ktype,
Takashi Iwai 132771
-- 
Takashi Iwai 132771
2.31.1
Takashi Iwai 132771