From dd20275d6bbfa6ec17a0aa04b88830789aa219e1 Mon Sep 17 00:00:00 2001 From: fengzero Date: Thu, 2 Jul 2026 06:47:23 +0000 Subject: [PATCH] fix array string check null --- plugins/mqtt/mqtt_handle.c | 3 ++- plugins/restful/rw_handle.c | 14 +++++++++----- src/utils/json.c | 5 ++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/plugins/mqtt/mqtt_handle.c b/plugins/mqtt/mqtt_handle.c index da6510f99..88da23cb7 100644 --- a/plugins/mqtt/mqtt_handle.c +++ b/plugins/mqtt/mqtt_handle.c @@ -379,7 +379,8 @@ static int json_value_to_tag_value(union neu_json_value *req, value->value.strs.strs = calloc(req->val_array_str.length, sizeof(char *)); for (size_t i = 0; i < req->val_array_str.length; i++) { - value->value.strs.strs[i] = strdup(req->val_array_str.p_strs[i]); + const char *s = req->val_array_str.p_strs[i]; + value->value.strs.strs[i] = strdup(s ? s : ""); } break; case NEU_JSON_OBJECT: diff --git a/plugins/restful/rw_handle.c b/plugins/restful/rw_handle.c index 52ee222ce..2472a0615 100644 --- a/plugins/restful/rw_handle.c +++ b/plugins/restful/rw_handle.c @@ -365,8 +365,8 @@ void handle_write(nng_aio *aio) cmd.value.value.strs.strs = calloc(req->value.val_array_str.length, sizeof(char *)); for (size_t i = 0; i < req->value.val_array_str.length; i++) { - cmd.value.value.strs.strs[i] = - strdup(req->value.val_array_str.p_strs[i]); + const char *s = req->value.val_array_str.p_strs[i]; + cmd.value.value.strs.strs[i] = strdup(s ? s : ""); } break; case NEU_JSON_OBJECT: @@ -588,8 +588,10 @@ void handle_write_tags(nng_aio *aio) sizeof(char *)); for (size_t k = 0; k < req->tags[i].value.val_array_str.length; k++) { + const char *s = + req->tags[i].value.val_array_str.p_strs[k]; cmd.tags[i].value.value.strs.strs[k] = - strdup(req->tags[i].value.val_array_str.p_strs[k]); + strdup(s ? s : ""); } break; case NEU_JSON_OBJECT: @@ -732,8 +734,10 @@ static void trans(neu_json_write_gtags_req_t *req, neu_req_write_gtags_t *cmd) for (size_t j = 0; j < req->groups[i].tags[k].value.val_array_str.length; j++) { - cmd->groups[i].tags[k].value.value.strs.strs[j] = strdup( - req->groups[i].tags[k].value.val_array_str.p_strs[j]); + const char *s = + req->groups[i].tags[k].value.val_array_str.p_strs[j]; + cmd->groups[i].tags[k].value.value.strs.strs[j] = + strdup(s ? s : ""); } break; diff --git a/src/utils/json.c b/src/utils/json.c index 4161c1e5f..52138d2c8 100644 --- a/src/utils/json.c +++ b/src/utils/json.c @@ -597,9 +597,8 @@ static int decode_object(json_t *root, neu_json_elem_t *ele) for (int i = 0; i < ele->v.val_array_str.length; i++) { json_t * value = json_array_get(ob, i); const char *str_val = json_string_value(value); - if (str_val != NULL) { - ele->v.val_array_str.p_strs[i] = strdup(str_val); - } + ele->v.val_array_str.p_strs[i] = + strdup(str_val != NULL ? str_val : ""); } }