From: Danylo Vodopianov <dvo-...@napatech.com>

Add verification on NULL for variables before use it in the memset.

Signed-off-by: Danylo Vodopianov <dvo-...@napatech.com>
---
 drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c  |  3 +++
 .../link_mgmt/link_100g/nt4ga_link_100g.c      |  2 ++
 .../net/ntnic/nthw/flow_api/flow_id_table.c    |  3 ++-
 .../nthw/flow_api/hw_mod/hw_mod_backend.c      |  3 ++-
 .../profile_inline/flow_api_profile_inline.c   | 18 ++++++++++++------
 drivers/net/ntnic/nthw/model/nthw_fpga_model.c |  6 ++++--
 .../net/ntnic/nthw/ntnic_meter/ntnic_meter.c   |  6 ++++++
 drivers/net/ntnic/ntnic_filter/ntnic_filter.c  |  5 +++++
 8 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c 
b/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
index bb775c052c..94b0c97d27 100644
--- a/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
+++ b/drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c
@@ -911,6 +911,9 @@ static int nthw_setup_managed_virt_queue_packed(struct 
nthw_virt_queue *vq,
        RTE_ASSERT(p_packet_buffers);
 
        /* clean canvas */
+       if (p_virt_struct_area->virt_addr == NULL)
+               return -1;
+
        memset(p_virt_struct_area->virt_addr, 0,
                sizeof(struct pvirtq_desc) * vq->queue_size +
                sizeof(struct pvirtq_event_suppress) * 2 + sizeof(int) * 
vq->queue_size);
diff --git a/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c 
b/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c
index ed9dabe27c..adb187d322 100644
--- a/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c
+++ b/drivers/net/ntnic/link_mgmt/link_100g/nt4ga_link_100g.c
@@ -137,6 +137,8 @@ static int _link_state_build(adapter_info_t *drv, 
nthw_mac_pcs_t *mac_pcs,
        uint32_t lh_internal_local_fault;
        uint32_t lh_received_local_fault;
 
+       RTE_ASSERT(state);
+
        memset(state, 0, sizeof(*state));
        state->link_disabled = is_port_disabled;
        nthw_mac_pcs_get_link_summary(mac_pcs, &abs, &phy_link_state, &lh_abs, 
&ll_phy_link_state,
diff --git a/drivers/net/ntnic/nthw/flow_api/flow_id_table.c 
b/drivers/net/ntnic/nthw/flow_api/flow_id_table.c
index a63f5542d1..c33308b5f7 100644
--- a/drivers/net/ntnic/nthw/flow_api/flow_id_table.c
+++ b/drivers/net/ntnic/nthw/flow_api/flow_id_table.c
@@ -114,7 +114,8 @@ void ntnic_id_table_free_id(void *id_table, uint32_t id)
 
        struct ntnic_id_table_element *current_element =
                ntnic_id_table_array_find_element(handle, id);
-       memset(current_element, 0, sizeof(struct ntnic_id_table_element));
+       if (current_element)
+               memset(current_element, 0, sizeof(struct 
ntnic_id_table_element));
 
        struct ntnic_id_table_element *element =
                ntnic_id_table_array_find_element(handle, handle->free_head);
diff --git a/drivers/net/ntnic/nthw/flow_api/hw_mod/hw_mod_backend.c 
b/drivers/net/ntnic/nthw/flow_api/hw_mod/hw_mod_backend.c
index 299b9b913a..2e2ecfe253 100644
--- a/drivers/net/ntnic/nthw/flow_api/hw_mod/hw_mod_backend.c
+++ b/drivers/net/ntnic/nthw/flow_api/hw_mod/hw_mod_backend.c
@@ -86,7 +86,8 @@ void *nthw_callocate_mod(struct common_func_s *mod, int sets, 
...)
 
 void nthw_zero_module_cache(struct common_func_s *mod)
 {
-       memset(mod->base, 0, mod->alloced_size);
+       if (mod)
+               memset(mod->base, 0, mod->alloced_size);
 }
 
 int nthw_flow_api_backend_init(struct flow_api_backend_s *dev,
diff --git 
a/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c 
b/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
index 5bf8a9a3ea..3133464675 100644
--- a/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
+++ b/drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
@@ -1714,15 +1714,14 @@ static int interpret_flow_elements(const struct 
flow_eth_dev *dev,
 
        *in_port_id = UINT32_MAX;
 
-       memset(packet_data, 0x0, sizeof(uint32_t) * 10);
-       memset(packet_mask, 0x0, sizeof(uint32_t) * 10);
-       memset(key_def, 0x0, sizeof(struct flm_flow_key_def_s));
-
-       if (elem == NULL) {
+       if (packet_data == NULL || packet_mask == NULL || key_def == NULL || 
elem == NULL) {
                nthw_flow_nic_set_error(ERR_FAILED, error);
                NT_LOG(ERR, FILTER, "Flow items missing");
                return -1;
        }
+       memset(packet_data, 0x0, sizeof(uint32_t) * 10);
+       memset(packet_mask, 0x0, sizeof(uint32_t) * 10);
+       memset(key_def, 0x0, sizeof(struct flm_flow_key_def_s));
 
        if (implicit_vlan_vid > 0) {
                uint32_t *sw_data = &packet_data[1 - sw_counter];
@@ -3192,6 +3191,9 @@ static int convert_fh_to_fh_flm(struct flow_handle *fh, 
const uint32_t *packet_d
 static void setup_db_qsl_data(struct nic_flow_def *fd, struct 
hw_db_inline_qsl_data *qsl_data,
        uint32_t num_dest_port, uint32_t num_queues)
 {
+       if (qsl_data == NULL)
+               return;
+
        memset(qsl_data, 0x0, sizeof(struct hw_db_inline_qsl_data));
 
        if (fd->dst_num_avail <= 0) {
@@ -3236,6 +3238,9 @@ static void setup_db_qsl_data(struct nic_flow_def *fd, 
struct hw_db_inline_qsl_d
 
 static void setup_db_hsh_data(struct nic_flow_def *fd, struct 
hw_db_inline_hsh_data *hsh_data)
 {
+       if (hsh_data == NULL)
+               return;
+
        memset(hsh_data, 0x0, sizeof(struct hw_db_inline_hsh_data));
 
        hsh_data->func = fd->hsh.func;
@@ -4816,7 +4821,8 @@ int flow_info_get_profile_inline(struct flow_eth_dev 
*dev, uint8_t caller_id,
        int res = 0;
 
        nthw_flow_nic_set_error(ERR_SUCCESS, error);
-       memset(port_info, 0, sizeof(struct rte_flow_port_info));
+       if (port_info)
+               memset(port_info, 0, sizeof(struct rte_flow_port_info));
 
        port_info->max_nb_aging_objects = dev->nb_aging_objects;
 
diff --git a/drivers/net/ntnic/nthw/model/nthw_fpga_model.c 
b/drivers/net/ntnic/nthw/model/nthw_fpga_model.c
index 0838527716..5256adc648 100644
--- a/drivers/net/ntnic/nthw/model/nthw_fpga_model.c
+++ b/drivers/net/ntnic/nthw/model/nthw_fpga_model.c
@@ -854,8 +854,10 @@ void nthw_register_flush(const nthw_register_t *p, 
uint32_t cnt)
 
 void nthw_register_clr(nthw_register_t *p)
 {
-       memset(p->mp_shadow, 0, p->mn_len * sizeof(uint32_t));
-       nthw_register_make_dirty(p);
+       if (p->mp_shadow) {
+               memset(p->mp_shadow, 0, p->mn_len * sizeof(uint32_t));
+               nthw_register_make_dirty(p);
+       }
 }
 
 /*
diff --git a/drivers/net/ntnic/nthw/ntnic_meter/ntnic_meter.c 
b/drivers/net/ntnic/nthw/ntnic_meter/ntnic_meter.c
index 66cc02a865..303c2cd51a 100644
--- a/drivers/net/ntnic/nthw/ntnic_meter/ntnic_meter.c
+++ b/drivers/net/ntnic/nthw/ntnic_meter/ntnic_meter.c
@@ -51,6 +51,9 @@ static int eth_mtr_capabilities_get_inline(struct rte_eth_dev 
*eth_dev,
                                "Ethernet device does not support metering");
        }
 
+       if (cap == NULL)
+               return -1;
+
        memset(cap, 0x0, sizeof(struct rte_mtr_capabilities));
 
        /* MBR records use 28-bit integers */
@@ -419,6 +422,9 @@ static int eth_mtr_stats_read_inline(struct rte_eth_dev 
*eth_dev,
                                "MTR id is out of range");
        }
 
+       if (stats == NULL)
+               return -1;
+
        memset(stats, 0x0, sizeof(struct rte_mtr_stats));
        profile_inline_ops->flm_mtr_read_stats(internals->flw_dev, caller_id, 
mtr_id, stats_mask,
                &stats->n_pkts[RTE_COLOR_GREEN],
diff --git a/drivers/net/ntnic/ntnic_filter/ntnic_filter.c 
b/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
index 5757c7c13c..fc06cf12c3 100644
--- a/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
+++ b/drivers/net/ntnic/ntnic_filter/ntnic_filter.c
@@ -248,6 +248,11 @@ int nthw_interpret_raw_data(uint8_t *data, uint8_t 
*preserve, int size, struct r
 
 int nthw_create_attr(struct cnv_attr_s *attribute, const struct rte_flow_attr 
*attr)
 {
+       if (!attribute) {
+               NT_LOG(ERR, FILTER, "ERROR no attribute to iterate!");
+               return -1;
+       }
+
        memset(&attribute->attr, 0x0, sizeof(struct rte_flow_attr));
 
        if (attr) {
-- 
2.47.1

Reply via email to