From 8eb5c8069a5ccb8dadf35765b6f9cca10fb98b84 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Wed, 7 Apr 2021 06:54:34 +0200 Subject: [PATCH] hw/block/nvme: fix ns attachment out-of-bounds read nvme_ns_attachment() does not verify the contents of the host-supplied 16 bit "Number of Identifiers" field in the command payload. Make sure the value is capped at 2047 and fix the out-of-bounds read. Fixes: 645ce1a70cb6 ("hw/block/nvme: support namespace attachment command") Cc: Minwoo Im Signed-off-by: Klaus Jensen Reviewed-by: Minwoo Im --- hw/block/nvme.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 82b3d453f5..6b1f056a0e 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -4920,6 +4920,7 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, NvmeRequest *req) return NVME_NS_CTRL_LIST_INVALID | NVME_DNR; } + *nr_ids = MIN(*nr_ids, NVME_CONTROLLER_LIST_SIZE - 1); for (i = 0; i < *nr_ids; i++) { ctrl = nvme_subsys_ctrl(n->subsys, ids[i]); if (!ctrl) { -- 2.11.0