From: Klaus Jensen Date: Wed, 7 Apr 2021 05:16:14 +0000 (+0200) Subject: hw/block/nvme: fix out-of-bounds read in nvme_subsys_ctrl X-Git-Tag: v6.0.0-rc3~17^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7645f21f409b67eb9aad9feef6283c2e186e3703;p=thirdparty%2Fqemu.git hw/block/nvme: fix out-of-bounds read in nvme_subsys_ctrl nvme_subsys_ctrl() is used in contexts where the given controller identifier is from an untrusted source. Like its friends nvme_ns() and nvme_subsys_ns(), nvme_subsys_ctrl() should just return NULL if an invalid identifier is given. Fixes: 645ce1a70cb6 ("hw/block/nvme: support namespace attachment command") Cc: Minwoo Im Signed-off-by: Klaus Jensen Reviewed-by: Minwoo Im --- diff --git a/hw/block/nvme-subsys.h b/hw/block/nvme-subsys.h index 1cbcad9be23..7d7ef5f7f12 100644 --- a/hw/block/nvme-subsys.h +++ b/hw/block/nvme-subsys.h @@ -36,7 +36,7 @@ int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp); static inline NvmeCtrl *nvme_subsys_ctrl(NvmeSubsystem *subsys, uint32_t cntlid) { - if (!subsys) { + if (!subsys || cntlid >= NVME_SUBSYS_MAX_CTRLS) { return NULL; }