The 'serial' accepted by the NVME device is at most 20 characters long. An over-sized user supplied value should be reported rather than silently truncated.
Signed-off-by: Daniel P. Berrangé <[email protected]> --- hw/nvme/ctrl.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index cc4593cd42..e6b2e3b70a 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -8600,6 +8600,11 @@ static bool nvme_check_params(NvmeCtrl *n, Error **errp) error_setg(errp, "serial property not set"); return false; } + if (strlen(params->serial) > NVME_ID_CTRL_SN_MAX_LEN) { + error_setg(errp, "'serial' parameter '%s' can be at most '%d' characters", + params->serial, NVME_ID_CTRL_SN_MAX_LEN); + return false; + } if (params->mqes < 1) { error_setg(errp, "mqes property cannot be less than 1"); -- 2.53.0
