hikptool/0052-hikptool-Resolved-some-centralized-code-review-comme.patch

1391 lines
54 KiB
Diff
Raw Normal View History

From faccc8979f5a6e458b02c7865b9e3316b9facfd1 Mon Sep 17 00:00:00 2001
From: veega2022 <zhuweijia@huawei.com>
Date: Wed, 8 Nov 2023 20:43:06 +0800
Subject: [PATCH] hikptool: Resolved some centralized code review comments.
1. The ret variable may be a random value.
2. The unsigned variable judgment branch is redundant judgment.
3. Fix Magic Numbers.
4. The print format does not match.
5. After the pointer is released, a null value is assigned to the pointer to prevent it from being used again.
6. Delete unused variables.
7. The uint64_t print issue is rectified and PRIx64/PRIu64 is used.
8. Add 'const' to constant array.
9. Modifying File Permissions.Eliminate software privilege escalation risks.
Signed-off-by: veega2022 <zhuweijia@huawei.com>
---
cxl/func_lib/cxl_func/cxl_feature.c | 16 +++----
cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c | 2 +-
libhikptdev/src/rciep/hikpt_rciep.c | 22 ++++-----
libhikptdev/src/rciep/hikpt_rciep.h | 2 +
net/hikp_net_lib.c | 33 +++++++------
net/hikp_net_lib.h | 6 +--
net/nic/nic_dfx/hikp_nic_dfx.c | 1 -
net/nic/nic_fd/hikp_nic_fd.c | 48 +++++++++----------
net/nic/nic_fec/hikp_nic_fec.c | 7 +--
net/nic/nic_info/hikp_nic_info.c | 9 ++--
net/nic/nic_log/hikp_nic_log.c | 2 +-
net/nic/nic_ppp/hikp_nic_ppp.c | 27 +++++++----
net/nic/nic_qos/hikp_nic_qos.c | 9 ++--
net/nic/nic_queue/hikp_nic_queue.c | 3 +-
net/nic/nic_rss/hikp_nic_rss.c | 3 +-
.../roce_ext_common/hikp_roce_ext_common.c | 12 +++--
net/roce/roce_gmv/hikp_roce_gmv.c | 8 ++--
net/roce/roce_mdb/hikp_roce_mdb.c | 1 -
net/roce/roce_qmm/hikp_roce_qmm.c | 8 ++--
net/roce/roce_scc/hikp_roce_scc.c | 6 +--
net/roce/roce_timer/hikp_roce_timer.c | 2 +-
net/roce/roce_trp/hikp_roce_trp.c | 18 ++++---
net/roce/roce_tsp/hikp_roce_tsp.c | 7 +--
net/ub/ub_crd/hikp_ub_crd.c | 1 -
net/ub/ub_ppp/hikp_unic_ppp.c | 5 ++
ossl/ossl_user_linux.c | 1 -
pcie/func_lib/pcie_func/pcie_link_ltssm.c | 3 +-
pcie/func_lib/pcie_func/pcie_link_ltssm.h | 1 +
pcie/func_lib/pcie_func/pcie_reg_dump.c | 4 +-
pcie/func_lib/pcie_func/pcie_statistics.c | 4 +-
sas/sas_func/sas_read_dev.c | 2 -
sas/sas_func/sas_read_dqe.c | 4 +-
sas/user_cmd/cmd_code/sas_cmd_dqe.c | 1 -
sas/user_cmd/cmd_code/sas_cmd_dump.c | 1 -
serdes/hikp_serdes.c | 4 +-
socip/hikp_socip_dumpreg.c | 1 -
tool_lib/op_logs.c | 18 ++++---
tool_lib/tool_cmd.c | 1 -
tool_lib/tool_lib.c | 3 ++
39 files changed, 161 insertions(+), 145 deletions(-)
diff --git a/cxl/func_lib/cxl_func/cxl_feature.c b/cxl/func_lib/cxl_func/cxl_feature.c
index 6de3f89..cd41b09 100644
--- a/cxl/func_lib/cxl_func/cxl_feature.c
+++ b/cxl/func_lib/cxl_func/cxl_feature.c
@@ -77,13 +77,9 @@ static void cxl_dl_fsm_str_get(struct cxl_fsm_state_str *fsm_str_table,
{
int i = 0;
- while (fsm_str_table[i].fsm_state >= 0) {
- if ((uint32_t)fsm_str_table[i].fsm_state != fsm_state) {
- i++;
- continue;
- }
- break;
- }
+ while (fsm_str_table[i].fsm_state >= 0 &&
+ (uint32_t)fsm_str_table[i].fsm_state != fsm_state)
+ i++;
*fsm_s = fsm_str_table[i].fsm_str;
}
@@ -95,7 +91,7 @@ static void cxl_dl_fsm_state_print(const struct cxl_data_unit *data, uint32_t da
struct cxl_fsm_state_str rrsm_state[] = {
{0x0, "retry_remote_normal"},
{0x1, "retry_llrack"},
- {-1, "unknow"}
+ {-1, "unknown"}
};
struct cxl_fsm_state_str lrsm_state[] = {
{0x1, "retry_local_normal"},
@@ -103,14 +99,14 @@ static void cxl_dl_fsm_state_print(const struct cxl_data_unit *data, uint32_t da
{0x4, "retry_phy_reinit"},
{0x8, "retry_local_idle"},
{0x10, "retry_abort"},
- {-1, "unknow"}
+ {-1, "unknown"}
};
struct cxl_fsm_state_str init_fsm_state[] = {
{0x1, "inactive"},
{0x2, "retry"},
{0x4, "param"},
{0x8, "active"},
- {-1, "unknow"}
+ {-1, "unknown"}
};
if (data_unit_len == 0) {
diff --git a/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c b/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c
index 2607705..2df9dc5 100644
--- a/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c
+++ b/cxl/usr_cmd/cmd_analysis/cxl_cmd_cpa.c
@@ -46,7 +46,7 @@ static int cxl_port_id_set(struct major_cmd_ctrl *self, const char *argv)
ret = string_toui(argv, &val);
if (ret) {
- printf("cpa set port id err %d\n", ret);
+ printf("cxl cpa set port id err %d\n", ret);
return ret;
}
g_cxl_cpa_cmd.port_id = val;
diff --git a/libhikptdev/src/rciep/hikpt_rciep.c b/libhikptdev/src/rciep/hikpt_rciep.c
index 5c7e82f..f673dd0 100644
--- a/libhikptdev/src/rciep/hikpt_rciep.c
+++ b/libhikptdev/src/rciep/hikpt_rciep.c
@@ -41,7 +41,7 @@ static int hikp_memcpy_io(void *dst, size_t dst_size, void const *src, size_t sr
if (dst_size < src_size)
return -EINVAL;
- for (i = 0; i < src_size / sizeof(uint32_t); i++)
+ for (i = 0; i < src_size / REP_DATA_BLK_SIZE; i++)
((uint32_t *)dst)[i] = ((uint32_t *)src)[i];
return 0;
@@ -148,13 +148,13 @@ static int hikp_rep_init(void const *req_data, uint32_t req_size,
printf("The request data is NULL.\n");
return -EINVAL;
}
- data_num = (req_size + (sizeof(uint32_t) - 1)) / sizeof(uint32_t);
+ data_num = (req_size + (REP_DATA_BLK_SIZE - 1)) / REP_DATA_BLK_SIZE;
if (data_num > HIKP_REQ_DATA_MAX) {
- printf("request data num(%u) exceeds max size(%u).\n", data_num, HIKP_REQ_DATA_MAX);
+ printf("request data num(%zu) exceeds max size(%u).\n", data_num, HIKP_REQ_DATA_MAX);
return -EINVAL;
}
if (data_num != 0) {
- *align_req_data = (uint32_t *)calloc(data_num, sizeof(uint32_t));
+ *align_req_data = (uint32_t *)calloc(data_num, REP_DATA_BLK_SIZE);
if (*align_req_data == NULL) {
printf("request memory malloc failed.\n");
return -ENOMEM;
@@ -175,12 +175,12 @@ static int hikp_req_first_round(uint32_t *req_data, uint32_t rep_num, uint32_t *
if (req_data == NULL)
return 0;
- src_size = rep_num * sizeof(uint32_t);
+ src_size = rep_num * REP_DATA_BLK_SIZE;
dst_size = sizeof(g_hikp_req->field.data);
hikp_memclr_io();
ret = hikp_memcpy_io((uint32_t *)(g_hikp_req->field.data), dst_size, req_data, src_size);
if (ret != 0) {
- printf("size error, dst_size:%u, src_size:%u.\n", dst_size, src_size);
+ printf("size error, dst_size:%zu, src_size:%zu.\n", dst_size, src_size);
return ret;
}
g_hikp_req->field.exe_round = 0;
@@ -209,7 +209,7 @@ static int hikp_multi_round_interact(struct hikp_cmd_ret **cmd_ret, uint32_t sta
}
p_cmd_ret = (struct hikp_cmd_ret *)malloc(sizeof(struct hikp_cmd_ret) +
- rsp_num * sizeof(uint32_t));
+ rsp_num * REP_DATA_BLK_SIZE);
if (p_cmd_ret == NULL) {
printf("response memory malloc fail.\n");
return -ENOMEM;
@@ -235,8 +235,8 @@ static int hikp_multi_round_interact(struct hikp_cmd_ret **cmd_ret, uint32_t sta
}
}
src_size = (i == cycle - 1) ?
- (rsp_num - (i * HIKP_RSP_DATA_MAX)) * sizeof(uint32_t) :
- HIKP_RSP_DATA_MAX * sizeof(uint32_t);
+ (rsp_num - (i * HIKP_RSP_DATA_MAX)) * REP_DATA_BLK_SIZE :
+ HIKP_RSP_DATA_MAX * REP_DATA_BLK_SIZE;
dst_size = src_size;
(void)hikp_memcpy_io(&(p_cmd_ret->rsp_data)[i * HIKP_RSP_DATA_MAX],
dst_size, (uint32_t *)(g_hikp_rsp->field.data), src_size);
@@ -258,7 +258,7 @@ struct hikp_cmd_ret *hikp_cmd_alloc(struct hikp_cmd_header *req_header,
{
struct hikp_cmd_ret *cmd_ret = NULL;
uint32_t *p_req_data = NULL;
- uint32_t rep_num, rsp_num;
+ uint32_t rep_num;
uint32_t cpl_status = HIKP_INIT_STAT;
int ret;
@@ -557,7 +557,7 @@ int hikp_dev_init(void)
goto out_unmap;
}
- len = (sizeof(union hikp_space_req) - sizeof(struct iep_doorbell)) / sizeof(uint32_t);
+ len = (sizeof(union hikp_space_req) - sizeof(struct iep_doorbell)) / REP_DATA_BLK_SIZE;
for (i = 0; i < len; i++)
g_hikp_req->dw[i] = 0;
diff --git a/libhikptdev/src/rciep/hikpt_rciep.h b/libhikptdev/src/rciep/hikpt_rciep.h
index dd08759..296d235 100644
--- a/libhikptdev/src/rciep/hikpt_rciep.h
+++ b/libhikptdev/src/rciep/hikpt_rciep.h
@@ -42,6 +42,8 @@
#define CPL_CHECK_GAP_US 1000
#define WAIT_CPL_MAX_MS 8000
+#define REP_DATA_BLK_SIZE sizeof(uint32_t)
+
enum {
HIKP_RESOURCE_DIR,
HIKP_CONFIG_DIR,
diff --git a/net/hikp_net_lib.c b/net/hikp_net_lib.c
index eba086e..8db4ad5 100644
--- a/net/hikp_net_lib.c
+++ b/net/hikp_net_lib.c
@@ -23,7 +23,7 @@
#include "tool_lib.h"
#include "hikptdev_plug.h"
-static int hikp_read_net_pci_info(const char *file_path, uint32_t len, char *content)
+static int hikp_read_net_pci_info(const char *file_path, char *content, size_t len)
{
char path[PATH_MAX + 1] = { 0 };
int ret;
@@ -32,7 +32,7 @@ static int hikp_read_net_pci_info(const char *file_path, uint32_t len, char *con
if (file_path == NULL || content == NULL)
return -EINVAL;
- if (len > MAX_PCI_ID_LEN)
+ if (len > MAX_PCI_ID_LEN + 1 || len < 1)
return -EINVAL;
if (strlen(file_path) > PATH_MAX || realpath(file_path, path) == NULL)
@@ -42,12 +42,12 @@ static int hikp_read_net_pci_info(const char *file_path, uint32_t len, char *con
if (fd < 0)
return -EPERM;
- ret = pread(fd, content, len, 0);
+ ret = pread(fd, content, len - 1, 0);
if (ret < 0) {
close(fd);
return -EIO;
}
- content[len] = '\0'; // The invoker ensures that the bounds are not crossed.
+ content[len - 1] = '\0'; // The invoker ensures that the bounds are not crossed.
close(fd);
return 0;
@@ -191,7 +191,7 @@ static int tool_get_bdf_by_dev_name(const char *name, struct tool_target *target
int tool_check_and_get_valid_bdf_id(const char *name, struct tool_target *target)
{
if (!name || !target)
- return 0;
+ return -EINVAL;
if (interface_is_bdf_id(name, target))
return 0;
@@ -211,11 +211,14 @@ bool is_dev_valid_and_special(int sockfd, struct tool_target *target)
return true;
}
-int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id)
+int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id, size_t id_len)
{
char revision_dir[MAX_BUS_PCI_DIR_LEN] = { 0 };
int ret;
+ if (id_len < MAX_PCI_ID_LEN + 1)
+ return -EINVAL;
+
ret = snprintf(revision_dir, sizeof(revision_dir), "%s%04x:%02x:%02x.%u%s",
HIKP_BUS_PCI_DEV_DIR, bdf->domain, bdf->bus_id, bdf->dev_id,
bdf->fun_id, HIKP_PCI_REVISION_DIR);
@@ -223,14 +226,14 @@ int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id)
HIKP_ERROR_PRINT("get revision dir fail.\n");
return -EIO;
}
- ret = hikp_read_net_pci_info((const char *)revision_dir, MAX_PCI_ID_LEN, revision_id);
+ ret = hikp_read_net_pci_info((const char *)revision_dir, revision_id, id_len);
if (ret != 0)
return ret;
return 0;
}
-static int hikp_get_dir_name_of_device(const char *path, uint32_t len, char *dir_name)
+static int hikp_get_dir_name_of_device(const char *path, size_t len, char *dir_name)
{
struct dirent *ptr;
DIR *dir = NULL;
@@ -261,12 +264,12 @@ static int hikp_get_dir_name_of_device(const char *path, uint32_t len, char *dir
return closedir(dir);
}
-int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name)
+int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name, size_t name_len)
{
char dev_name_dir[MAX_BUS_PCI_DIR_LEN] = { 0 };
int ret;
- if (!dev_name || !bdf)
+ if (!dev_name || !bdf || name_len < IFNAMSIZ)
return -EINVAL;
/* if dev_name already has a value, we do not need to obtain it. */
@@ -283,7 +286,7 @@ int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name)
if (!is_dir_exist(dev_name_dir))
return -ENOENT;
- return hikp_get_dir_name_of_device(dev_name_dir, IFNAMSIZ, dev_name);
+ return hikp_get_dir_name_of_device(dev_name_dir, name_len, dev_name);
}
int get_vf_dev_info_by_pf_dev_name(const char *pf_dev_name,
@@ -352,7 +355,7 @@ int get_numvfs_by_bdf(const struct bdf_t *bdf, uint8_t *numvfs)
HIKP_ERROR_PRINT("get numvfs dir fail.\n");
return -EIO;
}
- ret = hikp_read_net_pci_info((const char *)numvfs_dir, MAX_PCI_ID_LEN, numvf);
+ ret = hikp_read_net_pci_info((const char *)numvfs_dir, numvf, MAX_PCI_ID_LEN + 1);
if (ret != 0)
return ret;
@@ -366,12 +369,12 @@ int get_numvfs_by_bdf(const struct bdf_t *bdf, uint8_t *numvfs)
return 0;
}
-void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr)
+void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr, uint8_t mac_len)
{
int len;
- if (buf == NULL || mac_addr == NULL) {
- HIKP_WARN_PRINT("buf or mac_addr pointer is NULL.\n");
+ if (buf == NULL || mac_addr == NULL || mac_len != HIKP_NIC_ETH_MAC_ADDR_LEN) {
+ HIKP_WARN_PRINT("buf or mac_addr pointer is NULL, or len(%u) is invalid\n", mac_len);
return;
}
diff --git a/net/hikp_net_lib.h b/net/hikp_net_lib.h
index ad9e7e4..8a0958f 100644
--- a/net/hikp_net_lib.h
+++ b/net/hikp_net_lib.h
@@ -130,12 +130,12 @@ enum nic_get_ncsi_sub_cmd {
int hikp_net_creat_sock(void);
int tool_check_and_get_valid_bdf_id(const char *name, struct tool_target *target);
bool is_dev_valid_and_special(int sockfd, struct tool_target *target);
-int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id);
-int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name);
+int get_revision_id_by_bdf(const struct bdf_t *bdf, char *revision_id, size_t id_len);
+int get_dev_name_by_bdf(const struct bdf_t *bdf, char *dev_name, size_t name_len);
int get_numvfs_by_bdf(const struct bdf_t *bdf, uint8_t *numvfs);
int get_vf_dev_info_by_pf_dev_name(const char *pf_dev_name,
struct tool_target *vf_target, uint8_t vf_id);
int get_pf_dev_info_by_vf_dev_name(const char *vf_dev_name, struct tool_target *pf_target);
-void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr);
+void hikp_ether_format_addr(char *buf, uint16_t size, const uint8_t *mac_addr, uint8_t mac_len);
#endif
diff --git a/net/nic/nic_dfx/hikp_nic_dfx.c b/net/nic/nic_dfx/hikp_nic_dfx.c
index c734ce0..4095229 100644
--- a/net/nic/nic_dfx/hikp_nic_dfx.c
+++ b/net/nic/nic_dfx/hikp_nic_dfx.c
@@ -318,7 +318,6 @@ static void hikp_nic_dfx_cmd_execute(struct major_cmd_ctrl *self)
uint32_t max_dfx_size;
uint32_t version;
uint32_t i;
- int ret;
if (!(g_dfx_param.flag & MODULE_SET_FLAG)) {
self->err_no = -EINVAL;
diff --git a/net/nic/nic_fd/hikp_nic_fd.c b/net/nic/nic_fd/hikp_nic_fd.c
index 57bc94b..e699bf9 100644
--- a/net/nic/nic_fd/hikp_nic_fd.c
+++ b/net/nic/nic_fd/hikp_nic_fd.c
@@ -15,7 +15,7 @@
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
-
+#include <inttypes.h>
#include "hikp_nic_fd.h"
struct key_info {
@@ -255,13 +255,13 @@ static void hikp_nic_print_tuple(const struct key_info *tuple_key,
case OUTER_SRC_MAC:
case INNER_DST_MAC:
case INNER_SRC_MAC:
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *(tcam_y + 5), *(tcam_y + 4),
*(tcam_y + 3), *(tcam_y + 2), *(tcam_y + 1), *tcam_y);
break;
case OUTER_ETH_TYPE:
case INNER_ETH_TYPE:
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("0x%x\n", *(uint16_t *)tcam_y);
break;
case OUTER_VLAN_TAG_FST:
@@ -276,7 +276,7 @@ static void hikp_nic_print_tuple(const struct key_info *tuple_key,
case OUTER_DST_PORT:
case INNER_SRC_PORT:
case INNER_DST_PORT:
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("%u\n", *(uint16_t *)tcam_y);
break;
case OUTER_IP_TOS:
@@ -284,25 +284,25 @@ static void hikp_nic_print_tuple(const struct key_info *tuple_key,
case OUTER_IP_PROTO:
case INNER_IP_PROTO:
case OUTER_TUN_FLOW_ID:
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("0x%x\n", *tcam_y);
break;
case OUTER_SRC_IP:
case OUTER_DST_IP:
case INNER_SRC_IP:
case INNER_DST_IP:
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("%u.%u.%u.%u\n", *(tcam_y + 3), *(tcam_y + 2), *(tcam_y + 1), *tcam_y);
break;
case OUTER_L4_RSV:
case INNER_L4_RSV:
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("%u\n", *(uint32_t *)tcam_y);
break;
case OUTER_TUN_VNI:
for (i = 0; i < HIKP_NIC_FD_TUN_VNI_LEN; i++)
tun_vni |= (((uint32_t)*(tcam_y + i)) << (i * HIKP_BITS_PER_BYTE));
- printf("\t %s[mask=0x%llx]: ", tuple_key->key_name, mask);
+ printf("\t %s[mask=0x%" PRIx64 "]: ", tuple_key->key_name, mask);
printf("0x%x\n", tun_vni);
break;
default:
@@ -407,12 +407,12 @@ static void hikp_nic_fd_print_meta_data(struct nic_fd_rule_info *rule)
meta_bytes = HIKP_DIV_ROUND_UP(active_meta_width, HIKP_BITS_PER_BYTE);
meta_data_region = active_tcam_size - meta_bytes;
if (meta_bytes > sizeof(meta_data)) {
- printf("meta data copy size error, data size: 0x%x, max size: 0x%x\n",
+ printf("meta data copy size error, data size: %u, max size: %zu\n",
meta_bytes, sizeof(meta_data));
return;
}
memcpy(&meta_data, &key_y[meta_data_region], meta_bytes);
- printf("\t meta_data[meta_data=0x%llx]:\n", meta_data);
+ printf("\t meta_data[meta_data=0x%" PRIx64 "]:\n", meta_data);
cur_pos = meta_bytes * HIKP_BITS_PER_BYTE;
end = cur_pos - 1;
for (i = MAX_META_DATA - 1; i >= 0; i--) {
@@ -470,7 +470,7 @@ static void hikp_nic_fd_print_ad_data(struct nic_fd_rule_info *rule)
uint64_t ad_data;
ad_data = (uint64_t)rule->ad_data_h << NIC_FD_AD_DATA_S | rule->ad_data_l;
- printf("\n\tAction[ad data: 0x%llx]:\n", ad_data);
+ printf("\n\tAction[ad data: 0x%" PRIx64 "]:\n", ad_data);
hikp_nic_parse_ad_data(rule, &action);
@@ -544,7 +544,7 @@ static void hikp_nic_show_fd_counter(const void *data)
printf(" idx | hit_cnt\n");
for (i = 0; i < counter[stage_no].counter_size; i++) {
entry = &counter[stage_no].entry[i];
- printf(" %3u | %llu\n", entry->idx, entry->value);
+ printf(" %3u | %" PRIu64 "\n", entry->idx, entry->value);
}
}
@@ -554,7 +554,6 @@ static int hikp_nic_fd_get_blk(struct hikp_cmd_header *req_header,
{
struct hikp_cmd_ret *cmd_ret;
struct nic_fd_rsp *rsp;
- uint16_t idx;
int ret = 0;
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
@@ -792,10 +791,13 @@ static void hikp_nic_fd_data_free(union nic_fd_feature_info *fd_data)
const struct fd_feature_cmd *fd_cmd;
fd_cmd = &g_fd_feature_cmd[g_fd_param.feature_idx];
- if (strcmp(fd_cmd->feature_name, NIC_FD_RULES_NAME) == 0)
+ if (strcmp(fd_cmd->feature_name, NIC_FD_RULES_NAME) == 0) {
free(fd_data->rules[stage_no].rule);
- else if (strcmp(fd_cmd->feature_name, NIC_FD_COUNTER_NAME) == 0)
+ fd_data->rules[stage_no].rule = NULL;
+ } else if (strcmp(fd_cmd->feature_name, NIC_FD_COUNTER_NAME) == 0) {
free(fd_data->counter[stage_no].entry);
+ fd_data->counter[stage_no].entry = NULL;
+ }
free(fd_data);
}
@@ -859,31 +861,27 @@ static int hikp_nic_fd_check_input_param(struct major_cmd_ctrl *self,
if (bdf->dev_id != 0) {
snprintf(self->err_str, sizeof(self->err_str), "VF does not support query!");
- self->err_no = -EINVAL;
- return self->err_no;
+ return -EINVAL;
}
if (fd_param->feature_idx == -1) {
hikp_nic_fd_cmd_help(self, NULL);
snprintf(self->err_str, sizeof(self->err_str), "-du/--dump parameter error!");
- self->err_no = -EINVAL;
- return self->err_no;
+ return -EINVAL;
}
fd_cmd = &g_fd_feature_cmd[g_fd_param.feature_idx];
if (fd_param->stage_no == -1 && fd_cmd->sub_cmd_code != NIC_FD_HW_INFO_DUMP) {
snprintf(self->err_str, sizeof(self->err_str),
"please input '-st/--stage' parameter.");
- self->err_no = -EINVAL;
- return self->err_no;
+ return -EINVAL;
}
if (fd_cmd->sub_cmd_code == NIC_FD_HW_INFO_DUMP &&
(fd_param->id != -1 || fd_param->stage_no != -1)) {
snprintf(self->err_str, sizeof(self->err_str),
"no need '-id/--index' and '-st/--stage' parameter.");
- self->err_no = -EINVAL;
- return self->err_no;
+ return -EINVAL;
}
return 0;
@@ -899,8 +897,10 @@ static void hikp_nic_fd_cmd_execute(struct major_cmd_ctrl *self)
int ret;
ret = hikp_nic_fd_check_input_param(self, &g_fd_param);
- if (ret != 0)
+ if (ret != 0) {
+ self->err_no = ret;
return;
+ }
ret = hikp_nic_get_fd_hw_info(bdf, &g_fd_hw_info);
if (ret != 0) {
diff --git a/net/nic/nic_fec/hikp_nic_fec.c b/net/nic/nic_fec/hikp_nic_fec.c
index 5d9025c..342b3eb 100644
--- a/net/nic/nic_fec/hikp_nic_fec.c
+++ b/net/nic/nic_fec/hikp_nic_fec.c
@@ -15,7 +15,7 @@
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
-
+#include <inttypes.h>
#include "hikp_nic_fec.h"
static struct tool_target g_fec_target;
@@ -40,6 +40,7 @@ static int hikp_nic_fec_err_query(const struct bdf_t *bdf, struct nic_fec_err_in
rsp = (struct nic_fec_rsp *)cmd_ret->rsp_data;
*info = *(struct nic_fec_err_info *)rsp->data;
free(cmd_ret);
+ cmd_ret = NULL;
if (info->fec_mode >= NIC_FEC_MODE_BUTT) {
HIKP_ERROR_PRINT("unknown fec mode: %u\n", info->fec_mode);
@@ -71,7 +72,7 @@ static void hikp_nic_fec_err_show_basefec(const struct nic_fec_err_info *info)
for (total = 0, i = 0; i < lane_num; i++)
total += info->basefec.lane_corr_block_cnt[i];
- printf(" corrected_blocks: %llu\n", total);
+ printf(" corrected_blocks: %" PRIu64 "\n", total);
for (i = 0; i < lane_num; i++)
printf(" Lane %u: %u\n", i, info->basefec.lane_corr_block_cnt[i]);
@@ -79,7 +80,7 @@ static void hikp_nic_fec_err_show_basefec(const struct nic_fec_err_info *info)
for (total = 0, i = 0; i < lane_num; i++)
total += info->basefec.lane_uncorr_block_cnt[i];
- printf(" uncorrectable_blocks: %llu\n", total);
+ printf(" uncorrectable_blocks: %" PRIu64 "\n", total);
for (i = 0; i < lane_num; i++)
printf(" Lane %u: %u\n", i, info->basefec.lane_uncorr_block_cnt[i]);
}
diff --git a/net/nic/nic_info/hikp_nic_info.c b/net/nic/nic_info/hikp_nic_info.c
index d84ca18..cd78bc7 100644
--- a/net/nic/nic_info/hikp_nic_info.c
+++ b/net/nic/nic_info/hikp_nic_info.c
@@ -79,7 +79,8 @@ static int hikp_nic_get_curr_die_info(void)
free(cmd_ret);
cmd_ret = NULL;
- ret = get_revision_id_by_bdf(&g_info_param.target.bdf, g_info_param.revision_id);
+ ret = get_revision_id_by_bdf(&g_info_param.target.bdf, g_info_param.revision_id,
+ sizeof(g_info_param.revision_id));
if (ret != 0) {
HIKP_ERROR_PRINT("Getting revision fail.\n");
return ret;
@@ -87,7 +88,8 @@ static int hikp_nic_get_curr_die_info(void)
ret = get_numvfs_by_bdf(&g_info_param.target.bdf, &g_info_param.numvfs);
if (ret != 0)
HIKP_ERROR_PRINT("Getting numvfs fail, ret = %d.\n", ret);
- ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name);
+ ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name,
+ sizeof(g_info_param.target.dev_name));
if ((ret != 0) && (ret != -ENOENT)) {
HIKP_ERROR_PRINT("Getting dev name fail.\n");
return ret;
@@ -258,7 +260,8 @@ static void hikp_nic_info_print_cur_vf(const struct bdf_t *bdf)
printf("Current function is vf:\n");
printf("\t%-16s %04x:%02x:%02x.%u\n", "vf bdf id:",
bdf->domain, bdf->bus_id, bdf->dev_id, bdf->fun_id);
- ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name);
+ ret = get_dev_name_by_bdf(&g_info_param.target.bdf, g_info_param.target.dev_name,
+ sizeof(g_info_param.target.dev_name));
if ((ret != 0) && (ret != -ENOENT)) {
HIKP_ERROR_PRINT("Getting dev name fail.\n");
return;
diff --git a/net/nic/nic_log/hikp_nic_log.c b/net/nic/nic_log/hikp_nic_log.c
index 5cafe4e..893aef1 100644
--- a/net/nic/nic_log/hikp_nic_log.c
+++ b/net/nic/nic_log/hikp_nic_log.c
@@ -113,7 +113,7 @@ static int hikp_nic_get_first_blk_info(uint32_t *total_blk_num,
}
*log_data = (uint8_t *)calloc(1, log_size);
if (*log_data == NULL) {
- HIKP_ERROR_PRINT("malloc log memory 0x%x failed.", log_size);
+ HIKP_ERROR_PRINT("calloc log memory 0x%x failed.", log_size);
ret = -ENOMEM;
goto err_out;
}
diff --git a/net/nic/nic_ppp/hikp_nic_ppp.c b/net/nic/nic_ppp/hikp_nic_ppp.c
index b71fc48..7968ac3 100644
--- a/net/nic/nic_ppp/hikp_nic_ppp.c
+++ b/net/nic/nic_ppp/hikp_nic_ppp.c
@@ -95,7 +95,7 @@ static uint16_t hikp_nic_ppp_get_abs_func_id(const struct bdf_t *bdf, int relati
static void hikp_nic_ppp_get_func_name(char *buf, uint8_t len, uint8_t id)
{
if (id > 0)
- snprintf(buf, len, "vf%d", id - 1);
+ snprintf(buf, len, "vf%u", id - 1);
else
snprintf(buf, len, "pf");
}
@@ -145,7 +145,8 @@ static void hikp_nic_ppp_show_key_mem(struct nic_mac_tbl *tbl, bool is_key_mem)
uc_entry = &uc_tbl->entry[idx];
if (uc_entry->idx < g_ppp_hw_res.max_key_mem_size || !is_key_mem) {
hikp_ether_format_addr(mac_str,
- HIKP_NIC_ETH_ADDR_FMT_SIZE, uc_entry->mac_addr);
+ HIKP_NIC_ETH_ADDR_FMT_SIZE, uc_entry->mac_addr,
+ HIKP_NIC_ETH_MAC_ADDR_LEN);
printf("%04u | %01u | %s | ", uc_entry->idx, uc_entry->valid, mac_str);
printf("%04u | %u | %01u | ",
uc_entry->vlan_id, uc_entry->vmdq1, uc_entry->mac_en);
@@ -161,7 +162,8 @@ static void hikp_nic_ppp_show_key_mem(struct nic_mac_tbl *tbl, bool is_key_mem)
mc_entry = &mc_tbl->entry[idx];
if (mc_entry->idx < g_ppp_hw_res.max_key_mem_size || !is_key_mem) {
hikp_ether_format_addr(mac_str,
- HIKP_NIC_ETH_ADDR_FMT_SIZE, mc_entry->mac_addr);
+ HIKP_NIC_ETH_ADDR_FMT_SIZE, mc_entry->mac_addr,
+ HIKP_NIC_ETH_MAC_ADDR_LEN);
printf("%04u | %s | ", mc_entry->idx, mac_str);
printf("%08x:%08x:%08x:%08x:%08x:%08x:%08x:%08x",
mc_entry->function_bitmap[7], mc_entry->function_bitmap[6],
@@ -191,7 +193,7 @@ static void hikp_nic_ppp_show_func_uc_mac_addr(struct mac_vlan_uc_tbl *uc_tbl,
vf_id = hikp_get_field(uc_entry->e_vport, HIKP_NIC_VF_ID_MASK, HIKP_NIC_VF_ID_S);
if (bdf->fun_id == pf_id && vf_id == func_id) {
hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE,
- uc_entry->mac_addr);
+ uc_entry->mac_addr, HIKP_NIC_ETH_MAC_ADDR_LEN);
printf("\t%s\n", mac_str);
}
}
@@ -205,7 +207,7 @@ static void hikp_nic_ppp_show_func_mc_mac_addr(struct mac_vlan_mc_tbl *mc_tbl,
uint16_t abs_func_id;
uint8_t offset;
uint8_t idx;
- uint8_t i;
+ uint32_t i;
abs_func_id = hikp_nic_ppp_get_abs_func_id(bdf, func_id);
idx = abs_func_id / HIKP_NIC_PPP_FUNC_BITMAP_SIZE;
@@ -218,7 +220,7 @@ static void hikp_nic_ppp_show_func_mc_mac_addr(struct mac_vlan_mc_tbl *mc_tbl,
if (hikp_get_bit(mc_entry->function_bitmap[idx], offset) != 0) {
hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE,
- mc_entry->mac_addr);
+ mc_entry->mac_addr, HIKP_NIC_ETH_MAC_ADDR_LEN);
printf("\t%s\n", mac_str);
}
}
@@ -401,7 +403,8 @@ static void hikp_nic_ppp_show_manager_tbl(const void *data)
"| i_map | i_dir | e_type | pf_id | vf_id | q_id | drop\n");
for (i = 0; i < tbl->entry_size; i++) {
entry = &tbl->entry[i];
- hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE, entry->mac_addr);
+ hikp_ether_format_addr(mac_str, HIKP_NIC_ETH_ADDR_FMT_SIZE, entry->mac_addr,
+ HIKP_NIC_ETH_MAC_ADDR_LEN);
printf(" %02u | %s | %u ", entry->entry_no, mac_str, entry->mac_mask);
printf("| %04x | %u | %04u | %u ",
entry->ether_type, entry->ether_mask, entry->vlan_id, entry->vlan_mask);
@@ -489,7 +492,7 @@ static int hikp_nic_ppp_get_blk(struct hikp_cmd_header *req_header,
rsp = (struct nic_ppp_rsp *)cmd_ret->rsp_data;
if (rsp->rsp_head.cur_blk_size > buf_len) {
HIKP_ERROR_PRINT("nic_ppp block context copy size error, "
- "buffer size=%u, data size=%u.\n",
+ "buffer size=%zu, data size=%u.\n",
buf_len, rsp->rsp_head.cur_blk_size);
ret = -EINVAL;
goto out;
@@ -791,6 +794,7 @@ static int hikp_nic_ppp_alloc_mac_tbl_entry(struct nic_mac_tbl *mac_tbl,
if (mac_tbl->mc_tbl.entry == NULL) {
HIKP_ERROR_PRINT("Fail to alloc mc_entry memory.\n");
free(mac_tbl->uc_tbl.entry);
+ mac_tbl->uc_tbl.entry = NULL;
return -ENOMEM;
}
@@ -813,6 +817,7 @@ static int hikp_nic_ppp_alloc_vlan_tbl_entry(struct nic_vlan_tbl *vlan_tbl,
if (vlan_tbl->vf_vlan_tbl.entry == NULL) {
HIKP_ERROR_PRINT("Fail to alloc vf_vlan_tbl_entry memory.\n");
free(vlan_tbl->port_vlan_tbl.entry);
+ vlan_tbl->port_vlan_tbl.entry = NULL;
return -ENOMEM;
}
@@ -872,16 +877,22 @@ static void hikp_nic_ppp_data_free(union nic_ppp_feature_info *ppp_data)
if (strcmp(ppp_cmd->feature_name, NIC_PPP_MAC_TBL_NAME) == 0) {
mac_tbl = &ppp_data->mac_tbl;
free(mac_tbl->uc_tbl.entry);
+ mac_tbl->uc_tbl.entry = NULL;
free(mac_tbl->mc_tbl.entry);
+ mac_tbl->mc_tbl.entry = NULL;
} else if (strcmp(ppp_cmd->feature_name, NIC_PPP_VLAN_TBL_NAME) == 0) {
vlan_tbl = &ppp_data->vlan_tbl;
free(vlan_tbl->vf_vlan_tbl.entry);
+ vlan_tbl->vf_vlan_tbl.entry = NULL;
free(vlan_tbl->port_vlan_tbl.entry);
+ vlan_tbl->port_vlan_tbl.entry = NULL;
} else if (strcmp(ppp_cmd->feature_name, NIC_PPP_MNG_TBL_NAME) == 0) {
mng_tbl = &ppp_data->mng_tbl;
free(mng_tbl->entry);
+ mng_tbl->entry = NULL;
}
free(ppp_data);
+ ppp_data = NULL;
}
static int hikp_nic_ppp_check_optional_param(struct major_cmd_ctrl *self,
diff --git a/net/nic/nic_qos/hikp_nic_qos.c b/net/nic/nic_qos/hikp_nic_qos.c
index e3f0e9c..a09b4f1 100644
--- a/net/nic/nic_qos/hikp_nic_qos.c
+++ b/net/nic/nic_qos/hikp_nic_qos.c
@@ -98,12 +98,12 @@ static void hikp_nic_qos_show_dcb_info(const void *data)
printf("PFC configuration\n");
printf(" PFC enable:");
for (up = 0; up < HIKP_NIC_MAX_USER_PRIO_NUM; up++)
- printf(" %d", HI_BIT(up) & pfc->pfc_en ? 1 : 0);
+ printf(" %u", HI_BIT(up) & pfc->pfc_en ? 1 : 0);
printf("\n");
printf(" TC enable:");
for (tc_no = 0; tc_no < HIKP_NIC_MAX_TC_NUM; tc_no++)
- printf(" %d", HI_BIT(tc_no) & pfc->hw_tc_map ? 1 : 0);
+ printf(" %u", HI_BIT(tc_no) & pfc->hw_tc_map ? 1 : 0);
printf("\n");
printf("ETS configuration\n");
@@ -176,7 +176,7 @@ static int hikp_nic_qos_get_blk(struct hikp_cmd_header *req_header,
rsp = (struct nic_qos_rsp *)cmd_ret->rsp_data;
if (rsp->rsp_head.cur_blk_size > buf_len) {
HIKP_ERROR_PRINT("nic_qos block-%u copy size error, "
- "buffer size=%u, data size=%u.\n",
+ "buffer size=%zu, data size=%u.\n",
req_data->block_id, buf_len, rsp->rsp_head.cur_blk_size);
ret = -EINVAL;
goto out;
@@ -198,7 +198,6 @@ static int hikp_nic_query_qos_feature(struct hikp_cmd_header *req_header, const
size_t buf_len = sizeof(*data);
uint32_t total_blk_size;
uint8_t total_blk_num;
- uint8_t blk_num = 0;
uint8_t blk_id = 0;
int ret;
@@ -272,7 +271,7 @@ static void hikp_nic_qos_cmd_execute(struct major_cmd_ctrl *self)
}
memset(revision_id, 0, MAX_PCI_ID_LEN + 1);
- ret = get_revision_id_by_bdf(bdf, revision_id);
+ ret = get_revision_id_by_bdf(bdf, revision_id, sizeof(g_qos_param.revision_id));
// show pfc threshold as default if get revision_id error
if (ret)
strncpy(g_qos_param.revision_id, HIKP_IEP_REVISION,
diff --git a/net/nic/nic_queue/hikp_nic_queue.c b/net/nic/nic_queue/hikp_nic_queue.c
index f229e09..fa3b9d3 100644
--- a/net/nic/nic_queue/hikp_nic_queue.c
+++ b/net/nic/nic_queue/hikp_nic_queue.c
@@ -248,7 +248,7 @@ static int hikp_nic_queue_get_blk(struct hikp_cmd_header *req_header,
rsp = (struct nic_queue_rsp *)cmd_ret->rsp_data;
if (rsp->rsp_head.cur_blk_size > buf_len) {
HIKP_ERROR_PRINT("nic_queue block-%u copy size error, "
- "buffer size=%u, data size=%u.\n",
+ "buffer size=%zu, data size=%u.\n",
req_data->block_id, buf_len, rsp->rsp_head.cur_blk_size);
ret = -EINVAL;
goto out;
@@ -340,7 +340,6 @@ static bool hikp_nic_queue_check_feature_para_vaild(const struct queue_feature_c
static void hikp_nic_queue_cmd_execute(struct major_cmd_ctrl *self)
{
- struct bdf_t *bdf = &g_queue_param.target.bdf;
const struct queue_feature_cmd *queue_cmd;
union nic_queue_feature_info *queue_data;
struct hikp_cmd_header req_header = {0};
diff --git a/net/nic/nic_rss/hikp_nic_rss.c b/net/nic/nic_rss/hikp_nic_rss.c
index 5e4d261..ff1cfd2 100644
--- a/net/nic/nic_rss/hikp_nic_rss.c
+++ b/net/nic/nic_rss/hikp_nic_rss.c
@@ -366,7 +366,7 @@ static int hikp_nic_rss_get_blk(struct hikp_cmd_header *req_header,
rsp = (struct nic_rss_rsp *)cmd_ret->rsp_data;
if (rsp->rsp_head.cur_blk_size > buf_len) {
HIKP_ERROR_PRINT("nic_rss block-%u copy size error, "
- "buffer size=%u, data size=%u.\n",
+ "buffer size=%zu, data size=%u.\n",
req_data->block_id, buf_len, rsp->rsp_head.cur_blk_size);
ret = -EINVAL;
goto out;
@@ -388,7 +388,6 @@ static int hikp_nic_query_rss_feature(struct hikp_cmd_header *req_header, const
size_t buf_len = sizeof(*data);
uint32_t total_blk_size;
uint8_t total_blk_num;
- uint8_t blk_num = 0;
uint8_t blk_id = 0;
int ret;
diff --git a/net/roce/roce_ext_common/hikp_roce_ext_common.c b/net/roce/roce_ext_common/hikp_roce_ext_common.c
index d5ae64a..3a0c1ae 100644
--- a/net/roce/roce_ext_common/hikp_roce_ext_common.c
+++ b/net/roce/roce_ext_common/hikp_roce_ext_common.c
@@ -15,11 +15,15 @@
static void hikp_roce_ext_reg_data_free(struct reg_data *reg)
{
- if (reg->offset)
+ if (reg->offset) {
free(reg->offset);
+ reg->offset = NULL;
+ }
- if (reg->data)
+ if (reg->data) {
free(reg->data);
+ reg->data = NULL;
+ }
}
static void hikp_roce_ext_cmd_ret_free(struct hikp_cmd_ret *cmd_ret)
@@ -118,7 +122,7 @@ static int hikp_roce_ext_get_res(enum roce_cmd_type cmd_type,
reg->offset = (uint32_t *)calloc(res_head->total_block_num, sizeof(uint32_t));
reg->data = (uint32_t *)calloc(res_head->total_block_num, sizeof(uint32_t));
if ((reg->offset == NULL) || (reg->data == NULL)) {
- printf("hikptool roce_%s alloc log memmory 0x%x failed!\n",
+ printf("hikptool roce_%s alloc log memmory 0x%zx failed!\n",
cmd_name, max_size);
ret = -ENOMEM;
hikp_roce_ext_reg_data_free(reg);
@@ -128,7 +132,7 @@ static int hikp_roce_ext_get_res(enum roce_cmd_type cmd_type,
cur_size = res_head->cur_block_num * sizeof(uint32_t);
if (cur_size > max_size) {
- printf("hikptool roce_%s log data copy size error, data size: 0x%x, max size: 0x%x\n",
+ printf("hikptool roce_%s log data copy size error, data size: 0x%zx, max size: 0x%zx\n",
cmd_name, cur_size, max_size);
ret = -EINVAL;
hikp_roce_ext_reg_data_free(reg);
diff --git a/net/roce/roce_gmv/hikp_roce_gmv.c b/net/roce/roce_gmv/hikp_roce_gmv.c
index d65dc82..36ba665 100644
--- a/net/roce/roce_gmv/hikp_roce_gmv.c
+++ b/net/roce/roce_gmv/hikp_roce_gmv.c
@@ -44,16 +44,16 @@ static int hikp_roce_gmv_target(struct major_cmd_ctrl *self, const char *argv)
static int hikp_roce_gmv_idxget(struct major_cmd_ctrl *self, const char *argv)
{
char *endptr = NULL;
- int index;
+ uint64_t index;
- index = strtol(argv, &endptr, 0);
+ index = strtoul(argv, &endptr, 0);
if ((endptr <= argv) || (*endptr != '\0') ||
- (index < 0) || (index >= ROCE_MAX_HIKPTOOL_GMV)) {
+ (index >= ROCE_MAX_HIKPTOOL_GMV)) {
snprintf(self->err_str, sizeof(self->err_str), "Invalid gmv_index.");
self->err_no = -EINVAL;
return -EINVAL;
}
- g_roce_gmv_param.gmv_index = index;
+ g_roce_gmv_param.gmv_index = (uint32_t)index;
return 0;
}
diff --git a/net/roce/roce_mdb/hikp_roce_mdb.c b/net/roce/roce_mdb/hikp_roce_mdb.c
index 04af817..374f100 100644
--- a/net/roce/roce_mdb/hikp_roce_mdb.c
+++ b/net/roce/roce_mdb/hikp_roce_mdb.c
@@ -89,7 +89,6 @@ static void hikp_roce_mdb_execute_origin(struct major_cmd_ctrl *self)
struct roce_mdb_rsp_data *mdb_rsp = NULL;
struct hikp_cmd_ret *cmd_ret = NULL;
uint32_t reg_num;
- int ret;
self->err_no = hikp_roce_mdb_get_data(&cmd_ret, 0);
if (self->err_no) {
diff --git a/net/roce/roce_qmm/hikp_roce_qmm.c b/net/roce/roce_qmm/hikp_roce_qmm.c
index d127264..e440b82 100644
--- a/net/roce/roce_qmm/hikp_roce_qmm.c
+++ b/net/roce/roce_qmm/hikp_roce_qmm.c
@@ -45,16 +45,16 @@ static int hikp_roce_qmm_target(struct major_cmd_ctrl *self, const char *argv)
static int hikp_roce_qmm_bank_get(struct major_cmd_ctrl *self, const char *argv)
{
char *endptr = NULL;
- int bank_num;
+ uint64_t bank_num;
- bank_num = strtol(argv, &endptr, 0);
- if ((endptr <= argv) || (*endptr != '\0') || bank_num > QMM_BANK_NUM || bank_num < 0) {
+ bank_num = strtoul(argv, &endptr, 0);
+ if ((endptr <= argv) || (*endptr != '\0') || bank_num > QMM_BANK_NUM) {
snprintf(self->err_str, sizeof(self->err_str), "Invalid bank number!\n");
self->err_no = -EINVAL;
return -EINVAL;
}
- g_roce_qmm_param.bank_id = bank_num;
+ g_roce_qmm_param.bank_id = (uint32_t)bank_num;
return 0;
}
diff --git a/net/roce/roce_scc/hikp_roce_scc.c b/net/roce/roce_scc/hikp_roce_scc.c
index e8e166d..fe08873 100644
--- a/net/roce/roce_scc/hikp_roce_scc.c
+++ b/net/roce/roce_scc/hikp_roce_scc.c
@@ -150,7 +150,7 @@ static int hikp_roce_scc_get_total_data_num(struct roce_scc_head *res_head,
*offset = (uint32_t *)calloc(1, max_size);
*data = (uint32_t *)calloc(1, max_size);
if ((*offset == NULL) || (*data == NULL)) {
- printf("hikptool roce_scc alloc log memmory 0x%x failed\n", max_size);
+ printf("hikptool roce_scc alloc log memmory 0x%zx failed\n", max_size);
ret = -ENOMEM;
goto get_data_error;
}
@@ -158,7 +158,7 @@ static int hikp_roce_scc_get_total_data_num(struct roce_scc_head *res_head,
cur_size = roce_scc_res->head.cur_block_num * sizeof(uint32_t);
if (cur_size > max_size) {
printf("hikptool roce_scc log data copy size error, "
- "data size: 0x%x, max size: 0x%x\n", cur_size, max_size);
+ "data size: 0x%zx, max size: 0x%zx\n", cur_size, max_size);
ret = -EINVAL;
goto get_data_error;
}
@@ -194,7 +194,7 @@ static int hikp_roce_scc_get_next_data(struct roce_scc_head *res_head,
if (cur_size > data_size) {
hikp_roce_scc_cmd_ret_free(&cmd_ret);
printf("hikptool roce_scc next log data copy size error, "
- "data size: 0x%x, max size: 0x%x\n", cur_size, data_size);
+ "data size: 0x%zx, max size: 0x%zx\n", cur_size, data_size);
return -EINVAL;
}
memcpy(*offset, roce_scc_res->reg_data.offset, cur_size);
diff --git a/net/roce/roce_timer/hikp_roce_timer.c b/net/roce/roce_timer/hikp_roce_timer.c
index a78d383..05ad3e1 100644
--- a/net/roce/roce_timer/hikp_roce_timer.c
+++ b/net/roce/roce_timer/hikp_roce_timer.c
@@ -149,7 +149,7 @@ static void hikp_roce_timer_execute(struct major_cmd_ctrl *self)
int (*func[])(struct major_cmd_ctrl *self) = {
hikp_roce_timer_show_cqc, hikp_roce_timer_show_qpc
};
- char *function[] = {"show cqc", "show qpc"};
+ const char *function[] = {"show cqc", "show qpc"};
int i = 0;
int ret;
diff --git a/net/roce/roce_trp/hikp_roce_trp.c b/net/roce/roce_trp/hikp_roce_trp.c
index 4591a47..fad3317 100644
--- a/net/roce/roce_trp/hikp_roce_trp.c
+++ b/net/roce/roce_trp/hikp_roce_trp.c
@@ -85,20 +85,17 @@ static int hikp_roce_trp_bank_get(struct major_cmd_ctrl *self, const char *argv)
static int hikp_roce_trp_bank_check(void)
{
- uint32_t temp;
-
- temp = g_roce_trp_param_t.bank_id;
switch (g_roce_trp_param_t.sub_cmd) {
case (COMMON):
- if (temp > TRP_MAX_BANK_NUM || temp < 0)
+ if (g_roce_trp_param_t.bank_id > TRP_MAX_BANK_NUM)
return -EINVAL;
break;
case (PAYL):
- if (temp > PAYL_MAX_BANK_NUM || temp < 0)
+ if (g_roce_trp_param_t.bank_id > PAYL_MAX_BANK_NUM)
return -EINVAL;
break;
case (GEN_AC):
- if (temp > GAC_MAX_BANK_NUM || temp < 0)
+ if (g_roce_trp_param_t.bank_id > GAC_MAX_BANK_NUM)
return -EINVAL;
break;
default:
@@ -173,7 +170,8 @@ static int hikp_roce_trp_get_total_data_num(struct roce_trp_head *res_head,
*offset = (uint32_t *)calloc(1, max_size);
*data = (uint32_t *)calloc(1, max_size);
if ((*offset == NULL) || (*data == NULL)) {
- printf("hikptool roce_trp alloc log memmory 0x%x failed\n", max_size);
+ printf("hikptool roce_trp alloc log memmory 0x%zx failed\n", max_size);
+ hikp_roce_trp_reg_data_free(offset, data);
ret = -ENOMEM;
goto get_data_error;
}
@@ -181,7 +179,8 @@ static int hikp_roce_trp_get_total_data_num(struct roce_trp_head *res_head,
cur_size = roce_trp_res->head.cur_block_num * sizeof(uint32_t);
if (cur_size > max_size) {
printf("hikptool roce_trp log data copy size error, "
- "data size: 0x%x, max size: 0x%x\n", cur_size, max_size);
+ "data size: 0x%zx, max size: 0x%zx\n", cur_size, max_size);
+ hikp_roce_trp_reg_data_free(offset, data);
ret = -EINVAL;
goto get_data_error;
}
@@ -218,7 +217,7 @@ static int hikp_roce_trp_get_next_data(struct roce_trp_head *res_head,
if (cur_size > data_size) {
hikp_roce_trp_cmd_ret_free(&cmd_ret);
printf("hikptool roce_trp next log data copy size error, "
- "data size: 0x%x, max size: 0x%x\n", cur_size, data_size);
+ "data size: 0x%zx, max size: 0x%zx\n", cur_size, data_size);
return -EINVAL;
}
memcpy(*offset, roce_trp_res->reg_data.offset, cur_size);
@@ -268,7 +267,6 @@ static void hikp_roce_trp_execute(struct major_cmd_ctrl *self)
if (self->err_no) {
snprintf(self->err_str, sizeof(self->err_str),
"get the first roce_trp block dfx fail.");
- hikp_roce_trp_reg_data_free(&offset, &data);
return;
}
total_block_num = res_head.total_block_num;
diff --git a/net/roce/roce_tsp/hikp_roce_tsp.c b/net/roce/roce_tsp/hikp_roce_tsp.c
index 9469e4d..5bb2649 100644
--- a/net/roce/roce_tsp/hikp_roce_tsp.c
+++ b/net/roce/roce_tsp/hikp_roce_tsp.c
@@ -84,16 +84,13 @@ static int hikp_roce_tsp_bank_get(struct major_cmd_ctrl *self, const char *argv)
static int hikp_roce_tsp_bank_check(void)
{
- uint32_t temp;
-
- temp = g_roce_tsp_param_t.bank_id;
switch (g_roce_tsp_param_t.sub_cmd_code) {
case (COMMON):
- if ((temp > MAX_TSP_BANK_NUM) || temp < 0)
+ if (g_roce_tsp_param_t.bank_id > MAX_TSP_BANK_NUM)
return -EINVAL;
break;
case (TGP_TMP):
- if ((temp > MAX_TGP_TMP_BANK_NUM) || temp < 0)
+ if (g_roce_tsp_param_t.bank_id > MAX_TGP_TMP_BANK_NUM)
return -EINVAL;
break;
default:
diff --git a/net/ub/ub_crd/hikp_ub_crd.c b/net/ub/ub_crd/hikp_ub_crd.c
index e207ea2..0e47b5b 100644
--- a/net/ub/ub_crd/hikp_ub_crd.c
+++ b/net/ub/ub_crd/hikp_ub_crd.c
@@ -64,7 +64,6 @@ static int hikp_ub_query_crd(void)
struct hikp_cmd_ret *cmd_ret = NULL;
struct ub_crd_rsp *crd_rsp = NULL;
int offset;
- int ret;
char const *init_crds[][2] = {
{"CFG_REMOTE_ICRD", "CFG_REMOTE_LCRD"},
diff --git a/net/ub/ub_ppp/hikp_unic_ppp.c b/net/ub/ub_ppp/hikp_unic_ppp.c
index ccba4e0..bf0c026 100644
--- a/net/ub/ub_ppp/hikp_unic_ppp.c
+++ b/net/ub/ub_ppp/hikp_unic_ppp.c
@@ -191,6 +191,7 @@ static int hikp_unic_ppp_alloc_guid_tbl_entry(const struct hikp_unic_ppp_hw_reso
if (guid_tbl->mc_tbl.entry == NULL) {
HIKP_ERROR_PRINT("fail to alloc mc_guid_entry_table memory.\n");
free(guid_tbl->uc_tbl.entry);
+ guid_tbl->uc_tbl.entry = NULL;
return -ENOMEM;
}
@@ -399,13 +400,17 @@ static void hikp_unic_ppp_data_free(union unic_ppp_feature_info *unic_ppp_data)
if (g_unic_ppp_param.feature_idx == UNIC_PPP_IP_FEATURE_IDX) {
ip_tbl = &unic_ppp_data->ip_tbl;
free(ip_tbl->entry);
+ ip_tbl->entry = NULL;
} else if (g_unic_ppp_param.feature_idx == UNIC_PPP_GUID_FEATURE_IDX) {
guid_tbl = &unic_ppp_data->guid_tbl;
free(guid_tbl->uc_tbl.entry);
+ guid_tbl->uc_tbl.entry = NULL;
free(guid_tbl->mc_tbl.entry);
+ guid_tbl->mc_tbl.entry = NULL;
}
free(unic_ppp_data);
+ unic_ppp_data = NULL;
}
static void hikp_unic_ppp_cmd_execute(struct major_cmd_ctrl *self)
diff --git a/ossl/ossl_user_linux.c b/ossl/ossl_user_linux.c
index 8266a19..9dee61c 100644
--- a/ossl/ossl_user_linux.c
+++ b/ossl/ossl_user_linux.c
@@ -47,7 +47,6 @@ int uda_realpath(const char *file_dir, char *format_dir)
int uda_fcntl(const char *lock_file, uint32_t operation, int *fd)
{
- uint32_t f_opt = 0;
int fd_t = 0;
int ret;
diff --git a/pcie/func_lib/pcie_func/pcie_link_ltssm.c b/pcie/func_lib/pcie_func/pcie_link_ltssm.c
index 9697529..66226e0 100644
--- a/pcie/func_lib/pcie_func/pcie_link_ltssm.c
+++ b/pcie/func_lib/pcie_func/pcie_link_ltssm.c
@@ -213,7 +213,7 @@ static int pcie_print_ltssm_trace(const uint64_t *ltssm_input, uint32_t ltssm_nu
(uint32_t)ltssm_val.bits.any_change_pipe_req,
(uint32_t)ltssm_val.bits.rxl0s_st,
(uint32_t)ltssm_val.bits.train_bit_map1,
- (((uint32_t)ltssm_val.bits.rxl0s_st) << 2) |
+ (((uint32_t)ltssm_val.bits.rxl0s_st) << GEN5_BIT_OFFEST) |
((uint32_t)ltssm_val.bits.mac_rate),
(uint32_t)ltssm_val.bits.duration_counter,
(uint32_t)ltssm_val.bits.ltssm_state,
@@ -271,7 +271,6 @@ int pcie_ltssm_trace_clear(uint32_t port_id)
int pcie_ltssm_link_status_get(uint32_t port_id)
{
- uint32_t i;
union pcie_link_info reg_val;
struct hikp_cmd_header req_header;
struct hikp_cmd_ret *cmd_ret;
diff --git a/pcie/func_lib/pcie_func/pcie_link_ltssm.h b/pcie/func_lib/pcie_func/pcie_link_ltssm.h
index 8f3502b..cc51501 100644
--- a/pcie/func_lib/pcie_func/pcie_link_ltssm.h
+++ b/pcie/func_lib/pcie_func/pcie_link_ltssm.h
@@ -19,6 +19,7 @@
#define TRACE_STR_NUM 0x20
#define TRACER_DEPTH 65
#define PM_TRACE_STR_NUM 0x28
+#define GEN5_BIT_OFFEST 2
struct pcie_ltssm_num_string {
int ltssm;
diff --git a/pcie/func_lib/pcie_func/pcie_reg_dump.c b/pcie/func_lib/pcie_func/pcie_reg_dump.c
index aac3843..b8c2241 100644
--- a/pcie/func_lib/pcie_func/pcie_reg_dump.c
+++ b/pcie/func_lib/pcie_func/pcie_reg_dump.c
@@ -405,7 +405,7 @@ static int pcie_create_dumpreg_log_file(uint32_t port_id, uint32_t dump_level)
(void)remove((const char *)file_name);
/* Add write permission to the file */
- fd_file = open(file_name, O_RDWR | O_SYNC | O_CREAT, 0640);
+ fd_file = open(file_name, O_RDWR | O_SYNC | O_CREAT, 0600);
if (fd_file < 0) {
Err("PCIe DUMPREG", "open %s failed.\n", file_name);
return -EPERM;
@@ -419,7 +419,7 @@ static int pcie_close_dumpreg_log_file(void)
{
int ret;
- ret = fchmod(g_pcie_dumpreg_fd, 0440);
+ ret = fchmod(g_pcie_dumpreg_fd, 0400);
close(g_pcie_dumpreg_fd);
/* Revoke write permission of file */
g_pcie_dumpreg_fd = -1;
diff --git a/pcie/func_lib/pcie_func/pcie_statistics.c b/pcie/func_lib/pcie_func/pcie_statistics.c
index 40e5645..ed42cec 100644
--- a/pcie/func_lib/pcie_func/pcie_statistics.c
+++ b/pcie/func_lib/pcie_func/pcie_statistics.c
@@ -63,7 +63,7 @@ static int port_distribution_rsp_data_check(const struct hikp_cmd_ret *cmd_ret,
}
static int pcie_portid_serdes_relation(const struct pcie_macro_info *macro_info,
- uint32_t macro_num, uint32_t ndie_id)
+ uint32_t macro_num, uint32_t ndie_id)
{
uint32_t i, j;
@@ -90,7 +90,7 @@ int pcie_port_distribution_get(uint32_t chip_id)
struct hikp_cmd_header req_header;
struct hikp_cmd_ret *cmd_ret;
struct pcie_info_req_para req_data = { 0 };
- uint32_t src_size, dst_size, pair_num;
+ uint32_t pair_num;
struct pcie_port_info *port_info;
uint32_t i;
int ret;
diff --git a/sas/sas_func/sas_read_dev.c b/sas/sas_func/sas_read_dev.c
index 3a3db07..670e2d4 100644
--- a/sas/sas_func/sas_read_dev.c
+++ b/sas/sas_func/sas_read_dev.c
@@ -78,8 +78,6 @@ static void print_dev_link(const uint32_t *reg_save, uint32_t reg_num)
static void sas_print_dev(const uint32_t *reg_save, uint32_t reg_num, uint32_t cmd_type)
{
- uint32_t i;
-
if (reg_num == 0) {
printf("SAS device is failed\n");
return;
diff --git a/sas/sas_func/sas_read_dqe.c b/sas/sas_func/sas_read_dqe.c
index dbd30f3..7d49c0a 100644
--- a/sas/sas_func/sas_read_dqe.c
+++ b/sas/sas_func/sas_read_dqe.c
@@ -57,7 +57,7 @@ static void print_dqe_info(const void *reg_save, uint32_t reg_num)
printf("TLR_Ctrl: %u\n", dqe->dw0.TLR_Ctrl);
printf("Phy_ID: %u\n", dqe->dw0.Phy_ID);
printf("Force_Phy: %u\n", dqe->dw0.Force_Phy);
- printf("PORT: 0x%llx\n", dqe->dw0.PORT);
+ printf("PORT: 0x%x\n", dqe->dw0.PORT);
printf("PRI: %u\n", dqe->dw0.PRI);
printf("CMD: %u\n", dqe->dw0.CMD);
@@ -68,7 +68,7 @@ static void print_dqe_info(const void *reg_save, uint32_t reg_num)
printf("Reset: %u\n", dqe->dw1.Reset);
printf("PIR_Present: %u\n", dqe->dw1.PIR_Present);
printf("Enable_Transport_Layer_Retry: %u\n", dqe->dw1.Enable_Transport_Layer_Retry);
- printf("Verify_Data_Transfer_Length: 0x%llx\n", dqe->dw1.Verify_Data_Transfer_Length);
+ printf("Verify_Data_Transfer_Length: 0x%x\n", dqe->dw1.Verify_Data_Transfer_Length);
printf("Frame_Type: %u\n", dqe->dw1.Frame_Type);
printf("Device_ID: %u\n", dqe->dw1.Device_ID);
diff --git a/sas/user_cmd/cmd_code/sas_cmd_dqe.c b/sas/user_cmd/cmd_code/sas_cmd_dqe.c
index 4a9547a..26bf0eb 100644
--- a/sas/user_cmd/cmd_code/sas_cmd_dqe.c
+++ b/sas/user_cmd/cmd_code/sas_cmd_dqe.c
@@ -44,7 +44,6 @@ static int sas_dqe_info(struct major_cmd_ctrl *self, const char *argv)
static int sas_set_queue_id(struct major_cmd_ctrl *self, const char *argv)
{
int ret;
- uint32_t val = 0;
ret = sas_set_que_id(self, argv);
if (ret || sas_get_que_id() >= SAS_QUEUE_NUM) {
diff --git a/sas/user_cmd/cmd_code/sas_cmd_dump.c b/sas/user_cmd/cmd_code/sas_cmd_dump.c
index 4f2cfea..e7dedf0 100644
--- a/sas/user_cmd/cmd_code/sas_cmd_dump.c
+++ b/sas/user_cmd/cmd_code/sas_cmd_dump.c
@@ -42,7 +42,6 @@ static int sas_dump_global(struct major_cmd_ctrl *self, const char *argv)
static int sas_dump_phyx(struct major_cmd_ctrl *self, char const *argv)
{
int ret;
- uint32_t val = 0;
(void)sas_set_cmd_type(DUMP_PHYX);
ret = sas_set_phy_id(self, argv);
diff --git a/serdes/hikp_serdes.c b/serdes/hikp_serdes.c
index 320ded2..4afcb9b 100644
--- a/serdes/hikp_serdes.c
+++ b/serdes/hikp_serdes.c
@@ -322,7 +322,7 @@ static void hikp_serdes_info_cmd_execute(struct major_cmd_ctrl *self)
SERDES_OUTPUT_MAX_SIZE) {
self->err_no = -EINVAL;
snprintf(self->err_str, sizeof(self->err_str),
- "serdes_info rsp_data data copy size error, data size:0x%x max size:0x%x.",
+ "serdes_info rsp_data data copy size error, data size:0x%zx max size:0x%x.",
(cmd_ret->rsp_data_num * sizeof(uint32_t) - out_out_header_size),
SERDES_OUTPUT_MAX_SIZE);
goto err_out;
@@ -480,7 +480,7 @@ static void hikp_serdes_dump_cmd_execute(struct major_cmd_ctrl *self)
SERDES_OUTPUT_MAX_SIZE) {
self->err_no = -EINVAL;
snprintf(self->err_str, sizeof(self->err_str),
- "serdes_dump rsp_data data copy size error, data size:0x%x max size:0x%x.",
+ "serdes_dump rsp_data data copy size error, data size:0x%zx max size:0x%x.",
(cmd_ret->rsp_data_num * sizeof(uint32_t) - out_out_header_size),
SERDES_OUTPUT_MAX_SIZE);
goto err_out;
diff --git a/socip/hikp_socip_dumpreg.c b/socip/hikp_socip_dumpreg.c
index 0153dd9..7b11523 100644
--- a/socip/hikp_socip_dumpreg.c
+++ b/socip/hikp_socip_dumpreg.c
@@ -108,7 +108,6 @@ static bool check_socip_dumpreg_param(void)
static void dump_reg_info(const uint32_t *reg_data, uint32_t data_num)
{
#define ONE_LINE_PRINT_DATA_NUM 4
- struct dump_reg_param_t *param = &g_dump_reg_param[0];
uint32_t i;
for (i = 0; i < data_num; i++) {
diff --git a/tool_lib/op_logs.c b/tool_lib/op_logs.c
index d91ddb0..f57f5fd 100644
--- a/tool_lib/op_logs.c
+++ b/tool_lib/op_logs.c
@@ -29,7 +29,6 @@ static void op_log_write(const char *log_data)
{
size_t w_size;
FILE *fd;
- int ret;
if (strlen(g_op_log) == 0)
return;
@@ -108,8 +107,6 @@ static int op_log_add_time_to_log(char *log_base, int *offset, uint32_t flag)
struct timeval tv;
struct tm ptm;
int len = 0;
- long usec;
- long sec;
int ret;
(void)gettimeofday(&tv, NULL);
@@ -118,12 +115,18 @@ static int op_log_add_time_to_log(char *log_base, int *offset, uint32_t flag)
g_tv = tv;
len = (int)strftime(log_base + *offset, (OP_LOG_FILE_W_MAXSIZE + 1 - *offset),
OP_LOG_TIME_TEMP, &ptm);
+ if ((*offset + len) >= (OP_LOG_FILE_W_MAXSIZE + 1))
+ return -ENOMEM;
+
ret = snprintf(log_base + *offset + len,
(OP_LOG_FILE_W_MAXSIZE + 1 - *offset - len), OP_LOG_SEC_TIME_TEMP,
tv.tv_sec + tv.tv_usec / OP_LOG_SEC_AND_MICROSEC_TRANS);
- } else if (flag == LOG_FLAG_ONLY_TIME) {
+ } else {
len = (int)strftime(log_base + *offset, (OP_LOG_FILE_W_MAXSIZE + 1 - *offset),
OP_LOG_RESULT_TIME_TEMP, &ptm);
+ if ((*offset + len) >= (OP_LOG_FILE_W_MAXSIZE + 1))
+ return -ENOMEM;
+
ret = snprintf(log_base + *offset + len,
(OP_LOG_FILE_W_MAXSIZE + 1 - *offset - len),
OP_LOG_SEC_TIME_TEMP,
@@ -157,7 +160,6 @@ static int op_log_file_rollback(const char *op_log_backup, const char *log_dir)
char rollback_log[OP_LOG_FILE_W_MAXSIZE + 1] = {0};
int offset = 0;
int ret;
- int len;
ret = file_rollback(g_op_log, op_log_backup, OP_LOG_FILE_MAX_SIZE);
if (ret) {
@@ -280,10 +282,14 @@ void op_log_record_input(const int argc, const char **argv)
arg = input_str;
for (i = 0; i < argc; i++) {
- snprintf(arg, (sizeof(input_str) - (arg - input_str)), "%s ", argv[i]);
+ ret = snprintf(arg, (sizeof(input_str) - (arg - input_str)), "%s ", argv[i]);
+ if (ret < 0 || ret >= (sizeof(input_str) - (arg - input_str)))
+ return;
+
arg = arg + strlen(argv[i]) + 1;
}
input_str[strlen(input_str) - 1] = 0;
+
arr_size = HIKP_ARRAY_SIZE(log_info);
for (i = 0; i < arr_size; i++) {
ret = snprintf(g_input_buf + offset, (OP_LOG_FILE_W_MAXSIZE + 1 - offset),
diff --git a/tool_lib/tool_cmd.c b/tool_lib/tool_cmd.c
index 43a3b61..db54f0f 100644
--- a/tool_lib/tool_cmd.c
+++ b/tool_lib/tool_cmd.c
@@ -186,7 +186,6 @@ void command_parse_and_excute(const int argc, const char **argv)
{
struct major_cmd_ctrl *major_cmd = get_major_cmd();
int lock_fd;
- int check;
int ret;
major_cmd->err_no = check_command_length(argc, argv);
diff --git a/tool_lib/tool_lib.c b/tool_lib/tool_lib.c
index ad4bb68..180418f 100644
--- a/tool_lib/tool_lib.c
+++ b/tool_lib/tool_lib.c
@@ -337,6 +337,9 @@ bool tool_can_print(uint32_t interval, uint32_t burst, uint32_t *print_num, uint
{
uint64_t cur_time;
+ if (!print_num || !last_time)
+ return false;
+
cur_time = (uint64_t)time(NULL);
if ((*last_time + interval) == cur_time)
*print_num = 0;
--
2.42.0.windows.2