firmware: qemu_fw_cfg: fix sysfs information leak
commit1b656e9aad
upstream. Make sure to always NUL-terminate file names retrieved from the firmware to avoid accessing data beyond the entry slab buffer and exposing it through sysfs in case the firmware data is corrupt. Fixes:75f3e8e47f
("firmware: introduce sysfs driver for QEMU's fw_cfg device") Cc: stable@vger.kernel.org # 4.6 Cc: Gabriel Somlo <somlo@cmu.edu> Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://lore.kernel.org/r/20211201132528.30025-4-johan@kernel.org Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
898e91c32d
commit
bb08a4d101
@ -601,7 +601,7 @@ static int fw_cfg_register_file(const struct fw_cfg_file *f)
|
|||||||
/* set file entry information */
|
/* set file entry information */
|
||||||
entry->size = be32_to_cpu(f->size);
|
entry->size = be32_to_cpu(f->size);
|
||||||
entry->select = be16_to_cpu(f->select);
|
entry->select = be16_to_cpu(f->select);
|
||||||
memcpy(entry->name, f->name, FW_CFG_MAX_FILE_PATH);
|
strscpy(entry->name, f->name, FW_CFG_MAX_FILE_PATH);
|
||||||
|
|
||||||
/* register entry under "/sys/firmware/qemu_fw_cfg/by_key/" */
|
/* register entry under "/sys/firmware/qemu_fw_cfg/by_key/" */
|
||||||
err = kobject_init_and_add(&entry->kobj, &fw_cfg_sysfs_entry_ktype,
|
err = kobject_init_and_add(&entry->kobj, &fw_cfg_sysfs_entry_ktype,
|
||||||
|
Reference in New Issue
Block a user