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 ef74307f8..42e7ea661 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 45fa803ae..bd943cee6 100644 --- a/src/utils/json.c +++ b/src/utils/json.c @@ -601,9 +601,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 : ""); } }