raw/ntb: check SPAD user index
authorChengwen Feng <fengchengwen@huawei.com>
Wed, 21 Apr 2021 02:08:15 +0000 (10:08 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 5 May 2021 20:50:33 +0000 (22:50 +0200)
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 <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
drivers/raw/ntb/ntb.c

index 6dd213e..0f0e3f2 100644 (file)
@@ -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 ")",