5 Star 0 Fork 4

src-openEuler/hikptool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0032-hikptool-fix-the-memory-leak-risk-problem.patch 17.57 KB
一键复制 编辑 原始数据 按行查看 历史
From a5efd8daf63f13196ea38e2a2cd9e41c3d4be82b Mon Sep 17 00:00:00 2001
From: veega <zhuweijia@huawei.com>
Date: Wed, 6 Sep 2023 12:01:21 +0800
Subject: [PATCH] hikptool: fix the memory leak risk problem
After the framework fails to apply for memory, the memory needs to be released. The framework returns a processing failure message. The module needs to exit and release the memory.
Signed-off-by: veega <zhuweijia@huawei.com>
---
net/nic/nic_dfx/hikp_nic_dfx.c | 17 +++++++++--------
net/nic/nic_fd/hikp_nic_fd.c | 6 ++++--
net/nic/nic_info/hikp_nic_info.c | 4 +++-
net/nic/nic_log/hikp_nic_log.c | 8 ++++----
net/nic/nic_ppp/hikp_nic_ppp.c | 5 +++--
net/nic/nic_qos/hikp_nic_qos.c | 5 +++--
net/nic/nic_queue/hikp_nic_queue.c | 5 +++--
net/nic/nic_rss/hikp_nic_rss.c | 5 +++--
net/roce/roce_pkt/hikp_roce_pkt.c | 11 +++++++----
net/roce/roce_scc/hikp_roce_scc.c | 11 +++++++----
net/roce/roce_trp/hikp_roce_trp.c | 11 +++++++----
net/roce/roce_tsp/hikp_roce_tsp.c | 11 +++++++----
sas/sas_func/sas_analy_queue.c | 3 ++-
sas/sas_func/sas_dump_reg.c | 3 ++-
sas/sas_func/sas_read_dev.c | 3 ++-
sas/sas_func/sas_read_dqe.c | 3 ++-
sas/sas_func/sas_read_errcode.c | 3 ++-
sata/sata_func/sata_dump_reg.c | 3 ++-
serdes/hikp_serdes.c | 8 ++++----
socip/hikp_socip_dumpreg.c | 4 +++-
20 files changed, 79 insertions(+), 50 deletions(-)
diff --git a/net/nic/nic_dfx/hikp_nic_dfx.c b/net/nic/nic_dfx/hikp_nic_dfx.c
index 3584493..c734ce0 100644
--- a/net/nic/nic_dfx/hikp_nic_dfx.c
+++ b/net/nic/nic_dfx/hikp_nic_dfx.c
@@ -123,12 +123,12 @@ static int hikp_nic_get_first_blk_dfx(struct nic_dfx_rsp_head_t *rsp_head, uint3
uint32_t *max_dfx_size, uint32_t *version)
{
struct nic_dfx_rsp_t *dfx_rsp = NULL;
- struct hikp_cmd_ret *cmd_ret;
+ struct hikp_cmd_ret *cmd_ret = NULL;
int ret;
ret = hikp_nic_dfx_get_blk(&cmd_ret, 0, g_dfx_param.sub_cmd_code);
if (ret < 0)
- return ret;
+ goto err_out;
dfx_rsp = (struct nic_dfx_rsp_t *)(cmd_ret->rsp_data);
*version = cmd_ret->version;
@@ -168,12 +168,12 @@ static int hikp_nic_get_blk_dfx(struct nic_dfx_rsp_head_t *rsp_head, uint32_t bl
uint32_t *reg_data, uint32_t *max_dfx_size)
{
struct nic_dfx_rsp_t *dfx_rsp = NULL;
- struct hikp_cmd_ret *cmd_ret;
+ struct hikp_cmd_ret *cmd_ret = NULL;
int ret;
ret = hikp_nic_dfx_get_blk(&cmd_ret, blk_id, g_dfx_param.sub_cmd_code);
if (ret < 0)
- return ret;
+ goto err_out;
dfx_rsp = (struct nic_dfx_rsp_t *)(cmd_ret->rsp_data);
*rsp_head = dfx_rsp->rsp_head;
@@ -181,16 +181,17 @@ static int hikp_nic_get_blk_dfx(struct nic_dfx_rsp_head_t *rsp_head, uint32_t bl
HIKP_ERROR_PRINT("blk%u reg_data copy size error, "
"data size: 0x%x, max size: 0x%x\n",
blk_id, rsp_head->cur_blk_size, *max_dfx_size);
- free(cmd_ret);
- cmd_ret = NULL;
- return -EINVAL;
+ ret = -EINVAL;
+ goto err_out;
}
memcpy(reg_data, dfx_rsp->reg_data, rsp_head->cur_blk_size);
*max_dfx_size -= (uint32_t)rsp_head->cur_blk_size;
+
+err_out:
free(cmd_ret);
cmd_ret = NULL;
- return 0;
+ return ret;
}
static int cmd_dfx_module_select(struct major_cmd_ctrl *self, const char *argv)
diff --git a/net/nic/nic_fd/hikp_nic_fd.c b/net/nic/nic_fd/hikp_nic_fd.c
index 5a87c30..57bc94b 100644
--- a/net/nic/nic_fd/hikp_nic_fd.c
+++ b/net/nic/nic_fd/hikp_nic_fd.c
@@ -558,8 +558,10 @@ static int hikp_nic_fd_get_blk(struct hikp_cmd_header *req_header,
int ret = 0;
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
- if (cmd_ret == NULL)
- return -EIO;
+ if (hikp_rsp_normal_check(cmd_ret)) {
+ ret = -EIO;
+ goto out;
+ }
rsp = (struct nic_fd_rsp *)cmd_ret->rsp_data;
if (rsp->rsp_head.cur_blk_size > buf_len) {
diff --git a/net/nic/nic_info/hikp_nic_info.c b/net/nic/nic_info/hikp_nic_info.c
index 1853d95..d84ca18 100644
--- a/net/nic/nic_info/hikp_nic_info.c
+++ b/net/nic/nic_info/hikp_nic_info.c
@@ -64,12 +64,14 @@ static int hikp_nic_get_hw_info(struct hikp_cmd_ret **cmd_ret)
static int hikp_nic_get_curr_die_info(void)
{
struct nic_info_rsp_t *info_rsp = NULL;
- struct hikp_cmd_ret *cmd_ret;
+ struct hikp_cmd_ret *cmd_ret = NULL;
int ret;
ret = hikp_nic_get_hw_info(&cmd_ret);
if (ret != 0) {
HIKP_ERROR_PRINT("Get chip info fail.\n");
+ free(cmd_ret);
+ cmd_ret = NULL;
return ret;
}
info_rsp = (struct nic_info_rsp_t *)(cmd_ret->rsp_data);
diff --git a/net/nic/nic_log/hikp_nic_log.c b/net/nic/nic_log/hikp_nic_log.c
index 527f9e9..5cafe4e 100644
--- a/net/nic/nic_log/hikp_nic_log.c
+++ b/net/nic/nic_log/hikp_nic_log.c
@@ -96,13 +96,13 @@ static int hikp_nic_get_first_blk_info(uint32_t *total_blk_num,
uint32_t *cur_blk_size, uint8_t **log_data)
{
struct nic_log_rsp_data *log_rsp = NULL;
- struct hikp_cmd_ret *cmd_ret;
+ struct hikp_cmd_ret *cmd_ret = NULL;
uint32_t log_size;
int ret;
ret = hikp_nic_get_blk_log(&cmd_ret, 0);
if (ret < 0)
- return ret;
+ goto err_out;
log_rsp = (struct nic_log_rsp_data *)(cmd_ret->rsp_data);
log_size = (uint32_t)(log_rsp->total_blk_num * MAX_LOG_DATA_NUM * sizeof(uint32_t));
@@ -132,12 +132,12 @@ static int hikp_nic_get_log_info(uint32_t blk_id, uint32_t *cur_blk_size, uint8_
uint32_t max_log_size, uint32_t *blk_num)
{
struct nic_log_rsp_data *log_rsp = NULL;
- struct hikp_cmd_ret *cmd_ret;
+ struct hikp_cmd_ret *cmd_ret = NULL;
int ret;
ret = hikp_nic_get_blk_log(&cmd_ret, blk_id);
if (ret)
- return ret;
+ goto err_out;
log_rsp = (struct nic_log_rsp_data *)(cmd_ret->rsp_data);
*cur_blk_size = (uint32_t)log_rsp->cur_blk_size;
diff --git a/net/nic/nic_ppp/hikp_nic_ppp.c b/net/nic/nic_ppp/hikp_nic_ppp.c
index 28c867d..b71fc48 100644
--- a/net/nic/nic_ppp/hikp_nic_ppp.c
+++ b/net/nic/nic_ppp/hikp_nic_ppp.c
@@ -482,8 +482,9 @@ static int hikp_nic_ppp_get_blk(struct hikp_cmd_header *req_header,
int ret = 0;
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
- if (cmd_ret == NULL)
- return -EIO;
+ ret = hikp_rsp_normal_check(cmd_ret);
+ if (ret)
+ goto out;
rsp = (struct nic_ppp_rsp *)cmd_ret->rsp_data;
if (rsp->rsp_head.cur_blk_size > buf_len) {
diff --git a/net/nic/nic_qos/hikp_nic_qos.c b/net/nic/nic_qos/hikp_nic_qos.c
index 2d55e45..6c2db1d 100644
--- a/net/nic/nic_qos/hikp_nic_qos.c
+++ b/net/nic/nic_qos/hikp_nic_qos.c
@@ -143,9 +143,10 @@ static int hikp_nic_qos_get_blk(struct hikp_cmd_header *req_header,
int ret = 0;
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
- if (cmd_ret == NULL) {
+ ret = hikp_rsp_normal_check(cmd_ret);
+ if (ret) {
HIKP_ERROR_PRINT("failed to get block-%u context.\n", req_data->block_id);
- return -EIO;
+ goto out;
}
rsp = (struct nic_qos_rsp *)cmd_ret->rsp_data;
diff --git a/net/nic/nic_queue/hikp_nic_queue.c b/net/nic/nic_queue/hikp_nic_queue.c
index 37460c0..f229e09 100644
--- a/net/nic/nic_queue/hikp_nic_queue.c
+++ b/net/nic/nic_queue/hikp_nic_queue.c
@@ -239,9 +239,10 @@ static int hikp_nic_queue_get_blk(struct hikp_cmd_header *req_header,
int ret = 0;
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
- if (cmd_ret == NULL) {
+ ret = hikp_rsp_normal_check(cmd_ret);
+ if (ret) {
HIKP_ERROR_PRINT("failed to get block-%u context.\n", req_data->block_id);
- return -EIO;
+ goto out;
}
rsp = (struct nic_queue_rsp *)cmd_ret->rsp_data;
diff --git a/net/nic/nic_rss/hikp_nic_rss.c b/net/nic/nic_rss/hikp_nic_rss.c
index b785ba4..5e4d261 100644
--- a/net/nic/nic_rss/hikp_nic_rss.c
+++ b/net/nic/nic_rss/hikp_nic_rss.c
@@ -357,9 +357,10 @@ static int hikp_nic_rss_get_blk(struct hikp_cmd_header *req_header,
int ret = 0;
cmd_ret = hikp_cmd_alloc(req_header, req_data, sizeof(*req_data));
- if (cmd_ret == NULL) {
+ ret = hikp_rsp_normal_check(cmd_ret);
+ if (ret) {
HIKP_ERROR_PRINT("failed to get block-%u context.\n", req_data->block_id);
- return -EIO;
+ goto out;
}
rsp = (struct nic_rss_rsp *)cmd_ret->rsp_data;
diff --git a/net/roce/roce_pkt/hikp_roce_pkt.c b/net/roce/roce_pkt/hikp_roce_pkt.c
index abfc526..d3bf885 100644
--- a/net/roce/roce_pkt/hikp_roce_pkt.c
+++ b/net/roce/roce_pkt/hikp_roce_pkt.c
@@ -48,15 +48,18 @@ static int hikp_roce_pkt_clear_set(struct major_cmd_ctrl *self, const char *argv
static int hikp_roce_pkt_get_data(struct hikp_cmd_ret **cmd_ret, struct roce_pkt_req_param req_data)
{
struct hikp_cmd_header req_header = { 0 };
+ int ret;
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_PKT_CMD, 0);
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (*cmd_ret == NULL) {
- printf("hikptool roce_pkt cmd_ret malloc failed\n");
- return -EIO;
+ ret = hikp_rsp_normal_check(*cmd_ret);
+ if (ret) {
+ printf("hikptool roce_pkt get cmd data failed, ret: %d\n", ret);
+ free(*cmd_ret);
+ *cmd_ret = NULL;
}
- return 0;
+ return ret;
}
static void hikp_roce_pkt_print(uint32_t total_block_num,
diff --git a/net/roce/roce_scc/hikp_roce_scc.c b/net/roce/roce_scc/hikp_roce_scc.c
index 1011814..e8e166d 100644
--- a/net/roce/roce_scc/hikp_roce_scc.c
+++ b/net/roce/roce_scc/hikp_roce_scc.c
@@ -88,6 +88,7 @@ static int hikp_roce_scc_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
{
struct roce_scc_req_param req_data = { 0 };
struct hikp_cmd_header req_header = { 0 };
+ int ret;
req_data.block_id = *block_id;
req_data.bdf = g_roce_scc_param_t.target.bdf;
@@ -99,12 +100,14 @@ static int hikp_roce_scc_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_SCC_CMD, g_roce_scc_param_t.sub_cmd);
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (*cmd_ret == NULL) {
- printf("hikptool roce_scc cmd_ret malloc failed\n");
- return -EIO;
+ ret = hikp_rsp_normal_check(*cmd_ret);
+ if (ret) {
+ printf("hikptool roce_scc get cmd data failed, ret: %d\n", ret);
+ free(*cmd_ret);
+ *cmd_ret = NULL;
}
- return 0;
+ return ret;
}
static void hikp_roce_scc_reg_data_free(uint32_t **offset, uint32_t **data)
diff --git a/net/roce/roce_trp/hikp_roce_trp.c b/net/roce/roce_trp/hikp_roce_trp.c
index bf22484..4591a47 100644
--- a/net/roce/roce_trp/hikp_roce_trp.c
+++ b/net/roce/roce_trp/hikp_roce_trp.c
@@ -112,6 +112,7 @@ static int hikp_roce_trp_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
{
struct roce_trp_req_param req_data = { 0 };
struct hikp_cmd_header req_header = { 0 };
+ int ret;
req_data.block_id = *block_id;
req_data.bdf = g_roce_trp_param_t.target.bdf;
@@ -122,12 +123,14 @@ static int hikp_roce_trp_get_data(struct hikp_cmd_ret **cmd_ret, const uint32_t
}
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_TRP_CMD, g_roce_trp_param_t.sub_cmd);
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (*cmd_ret == NULL) {
- printf("hikptool roce_trp cmd_ret malloc failed\n");
- return -EIO;
+ ret = hikp_rsp_normal_check(*cmd_ret);
+ if (ret) {
+ printf("hikptool roce_trp get cmd data failed, ret: %d\n", ret);
+ free(*cmd_ret);
+ *cmd_ret = NULL;
}
- return 0;
+ return ret;
}
static void hikp_roce_trp_reg_data_free(uint32_t **offset, uint32_t **data)
diff --git a/net/roce/roce_tsp/hikp_roce_tsp.c b/net/roce/roce_tsp/hikp_roce_tsp.c
index 5d06ede..ca3126b 100644
--- a/net/roce/roce_tsp/hikp_roce_tsp.c
+++ b/net/roce/roce_tsp/hikp_roce_tsp.c
@@ -122,6 +122,7 @@ static int hikp_roce_tsp_get_data(struct hikp_cmd_ret **cmd_ret,
struct roce_tsp_req_param req_data, uint32_t sub_cmd_code)
{
struct hikp_cmd_header req_header = { 0 };
+ int ret;
if (g_roce_tsp_param_t.sub_cmd_code == 0) {
printf("please enter module name: -m/--modlue\n");
@@ -129,12 +130,14 @@ static int hikp_roce_tsp_get_data(struct hikp_cmd_ret **cmd_ret,
}
hikp_cmd_init(&req_header, ROCE_MOD, GET_ROCEE_TSP_CMD, sub_cmd_code);
*cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (*cmd_ret == NULL) {
- printf("hikptool roce_tsp cmd_ret malloc failed\n");
- return -EIO;
+ ret = hikp_rsp_normal_check(*cmd_ret);
+ if (ret) {
+ printf("hikptool roce_tsp get cmd data failed, ret: %d\n", ret);
+ free(*cmd_ret);
+ *cmd_ret = NULL;
}
- return 0;
+ return ret;
}
static void hikp_roce_tsp_print(uint32_t total_block_num,
diff --git a/sas/sas_func/sas_analy_queue.c b/sas/sas_func/sas_analy_queue.c
index ce886b9..8fca197 100644
--- a/sas/sas_func/sas_analy_queue.c
+++ b/sas/sas_func/sas_analy_queue.c
@@ -40,8 +40,9 @@ static int sas_get_res(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
hikp_cmd_init(&req_header, SAS_MOD, SAS_ANACQ, ANACQ_PRT);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
printf("sas_analy excutes hikp_cmd_alloc err\n");
+ free(cmd_ret);
return -EINVAL;
}
*reg_num = cmd_ret->rsp_data_num;
diff --git a/sas/sas_func/sas_dump_reg.c b/sas/sas_func/sas_dump_reg.c
index d012aa1..5736726 100644
--- a/sas/sas_func/sas_dump_reg.c
+++ b/sas/sas_func/sas_dump_reg.c
@@ -32,8 +32,9 @@ static int sas_get_reg(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
hikp_cmd_init(&req_header, SAS_MOD, SAS_DUMP, cmd->sas_cmd_type);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
printf("sas_dump excutes hikp_cmd_alloc err\n");
+ free(cmd_ret);
return -1;
}
*reg_num = cmd_ret->rsp_data_num;
diff --git a/sas/sas_func/sas_read_dev.c b/sas/sas_func/sas_read_dev.c
index d01f95f..8b9b58d 100644
--- a/sas/sas_func/sas_read_dev.c
+++ b/sas/sas_func/sas_read_dev.c
@@ -33,8 +33,9 @@ static int sas_get_dev(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
hikp_cmd_init(&req_header, SAS_MOD, SAS_DEV, cmd->sas_cmd_type);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
printf("sas_dqe excutes hikp_cmd_alloc err\n");
+ free(cmd_ret);
return -EINVAL;
}
*reg_num = cmd_ret->rsp_data_num;
diff --git a/sas/sas_func/sas_read_dqe.c b/sas/sas_func/sas_read_dqe.c
index 2f653df..dbd30f3 100644
--- a/sas/sas_func/sas_read_dqe.c
+++ b/sas/sas_func/sas_read_dqe.c
@@ -33,8 +33,9 @@ static int sas_get_dqe(const struct tool_sas_cmd *cmd, uint32_t *reg_save, uint3
hikp_cmd_init(&req_header, SAS_MOD, SAS_DQE, cmd->sas_cmd_type);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
printf("sas_dqe excutes hikp_cmd_alloc err\n");
+ free(cmd_ret);
return -EINVAL;
}
*reg_num = cmd_ret->rsp_data_num;
diff --git a/sas/sas_func/sas_read_errcode.c b/sas/sas_func/sas_read_errcode.c
index 4f89bda..6c7850e 100644
--- a/sas/sas_func/sas_read_errcode.c
+++ b/sas/sas_func/sas_read_errcode.c
@@ -31,8 +31,9 @@ static int sas_get_errcode(const struct tool_sas_cmd *cmd, uint32_t *reg_save, u
hikp_cmd_init(&req_header, SAS_MOD, SAS_ERRCODE, cmd->sas_cmd_type);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
printf("sas_errcode excutes hikp_cmd_alloc err\n");
+ free(cmd_ret);
return -EINVAL;
}
*reg_num = cmd_ret->rsp_data_num;
diff --git a/sata/sata_func/sata_dump_reg.c b/sata/sata_func/sata_dump_reg.c
index 86f6760..b4ff35f 100644
--- a/sata/sata_func/sata_dump_reg.c
+++ b/sata/sata_func/sata_dump_reg.c
@@ -33,8 +33,9 @@ static int sata_get_reg(const struct tool_sata_cmd *cmd, uint32_t *reg_save, uin
hikp_cmd_init(&req_header, SATA_MOD, SATA_DUMP, cmd->sata_cmd_type);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
printf("hikp_data_proc err\n");
+ free(cmd_ret);
return -1;
}
*reg_num = cmd_ret->rsp_data_num;
diff --git a/serdes/hikp_serdes.c b/serdes/hikp_serdes.c
index 527fd53..320ded2 100644
--- a/serdes/hikp_serdes.c
+++ b/serdes/hikp_serdes.c
@@ -309,10 +309,10 @@ static void hikp_serdes_info_cmd_execute(struct major_cmd_ctrl *self)
hikp_cmd_init(&req_header, SERDES_MOD, SERDES_KEY_INFO, g_serdes_param.sub_cmd);
cmd_ret = hikp_cmd_alloc(&req_header, &hilink_cmd, sizeof(hilink_cmd));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
snprintf(self->err_str, sizeof(self->err_str), "hikp_cmd_alloc err.");
self->err_no = -EINVAL;
- return;
+ goto err_out;
}
out_out_header_size = sizeof(out_put.str_len) + sizeof(out_put.result_offset) +
sizeof(out_put.type) + sizeof(out_put.ret_val);
@@ -467,10 +467,10 @@ static void hikp_serdes_dump_cmd_execute(struct major_cmd_ctrl *self)
hikp_cmd_init(&req_header, SERDES_MOD, SERDES_DUMP_REG, g_serdes_param.sub_cmd);
cmd_ret = hikp_cmd_alloc(&req_header, &hilink_cmd, sizeof(hilink_cmd));
- if (cmd_ret == NULL) {
+ if (cmd_ret == NULL || cmd_ret->status != 0) {
self->err_no = -EINVAL;
snprintf(self->err_str, sizeof(self->err_str), "hikp_cmd_alloc err.");
- return;
+ goto err_out;
}
out_out_header_size = sizeof(out_put.str_len) + sizeof(out_put.result_offset) +
sizeof(out_put.type) + sizeof(out_put.ret_val);
diff --git a/socip/hikp_socip_dumpreg.c b/socip/hikp_socip_dumpreg.c
index 32325bb..0153dd9 100644
--- a/socip/hikp_socip_dumpreg.c
+++ b/socip/hikp_socip_dumpreg.c
@@ -141,9 +141,11 @@ static void hikp_socip_dumpreg_execute(struct major_cmd_ctrl *self)
req_data.controller_id = param[CONTROLLER_ID_INDEX].val;
hikp_cmd_init(&req_header, SOCIP_MOD, HIKP_SOCIP_CMD_DUMPREG, param[MODULE_ID_INDEX].val);
cmd_ret = hikp_cmd_alloc(&req_header, &req_data, sizeof(req_data));
- if (!cmd_ret) {
+ if (!cmd_ret || cmd_ret->status != 0) {
self->err_no = -EINVAL;
HIKP_ERROR_PRINT("hikp_cmd_alloc\n");
+ free(cmd_ret);
+ cmd_ret = NULL;
return;
}
--
2.36.1.windows.1
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/hikptool.git
git@gitee.com:src-openeuler/hikptool.git
src-openeuler
hikptool
hikptool
master

搜索帮助