From 12dd8d79fe6e7fedf26f2e4cc2ea8d3804e3cb7c Mon Sep 17 00:00:00 2001 From: "xiang.zhou" Date: Wed, 11 Dec 2024 14:49:07 +0800 Subject: [PATCH] fixbug:use after free --- src/adapter/driver/driver.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/adapter/driver/driver.c b/src/adapter/driver/driver.c index e4d8c618..20072e86 100644 --- a/src/adapter/driver/driver.c +++ b/src/adapter/driver/driver.c @@ -2132,9 +2132,7 @@ static int report_callback(void *usr_data) data->ctx->index = utarray_len(group->apps); pthread_mutex_init(&data->ctx->mtx, NULL); - utarray_foreach(group->apps, sub_app_t *, app) - { - + for (uint16_t i = 0; i < utarray_len(group->apps) - 1; i++) { utarray_foreach(data->tags, neu_resp_tag_value_meta_t *, tag_value) { @@ -2142,10 +2140,21 @@ static int report_callback(void *usr_data) json_incref(tag_value->value.value.json); } } + } + + utarray_foreach(group->apps, sub_app_t *, app) + { if (group->driver->adapter.cb_funs.responseto( &group->driver->adapter, &header, data, app->addr) != 0) { + utarray_foreach(data->tags, neu_resp_tag_value_meta_t *, + tag_value) + { + if (tag_value->value.type == NEU_TYPE_CUSTOM) { + json_decref(tag_value->value.value.json); + } + } neu_trans_data_free(data); if (trans_trace) { neu_otel_scope_add_span_attr_int(trans_scope, app->app, @@ -2160,13 +2169,6 @@ static int report_callback(void *usr_data) } } - utarray_foreach(data->tags, neu_resp_tag_value_meta_t *, tag_value) - { - if (tag_value->value.type == NEU_TYPE_CUSTOM) { - json_decref(tag_value->value.value.json); - } - } - if (trans_trace) { neu_otel_scope_set_span_end_time(trans_scope, neu_time_ns()); neu_otel_trace_set_expected_span_num(trans_trace, app_num);