From 586f12881dc0fc37720e55f59c8a11a9e184388d Mon Sep 17 00:00:00 2001 From: Chengwen Feng Date: Wed, 21 Apr 2021 10:08:15 +0800 Subject: [PATCH] raw/ntb: check SPAD user index This patch adds checking spad user index validity when set or get attr. Fixes: 277310027965 ("raw/ntb: introduce NTB raw device driver") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng Signed-off-by: Min Hu (Connor) Acked-by: Xiaoyun Li --- drivers/raw/ntb/ntb.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/raw/ntb/ntb.c b/drivers/raw/ntb/ntb.c index 6dd213ef6e..0f0e3f27a0 100644 --- a/drivers/raw/ntb/ntb.c +++ b/drivers/raw/ntb/ntb.c @@ -1080,6 +1080,10 @@ ntb_attr_set(struct rte_rawdev *dev, const char *attr_name, if (hw->ntb_ops->spad_write == NULL) return -ENOTSUP; index = atoi(&attr_name[NTB_SPAD_USER_LEN]); + if (index < 0 || index >= NTB_SPAD_USER_MAX_NUM) { + NTB_LOG(ERR, "Invalid attribute (%s)", attr_name); + return -EINVAL; + } (*hw->ntb_ops->spad_write)(dev, hw->spad_user_list[index], 1, attr_value); NTB_LOG(DEBUG, "Set attribute (%s) Value (%" PRIu64 ")", @@ -1174,6 +1178,10 @@ ntb_attr_get(struct rte_rawdev *dev, const char *attr_name, if (hw->ntb_ops->spad_read == NULL) return -ENOTSUP; index = atoi(&attr_name[NTB_SPAD_USER_LEN]); + if (index < 0 || index >= NTB_SPAD_USER_MAX_NUM) { + NTB_LOG(ERR, "Attribute (%s) out of range", attr_name); + return -EINVAL; + } *attr_value = (*hw->ntb_ops->spad_read)(dev, hw->spad_user_list[index], 0); NTB_LOG(DEBUG, "Attribute (%s) Value (%" PRIu64 ")", -- 2.20.1