From 131465386dab1e709c77460da9a79f6ebc4a076d Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 6 Feb 2023 17:39:26 +0800 Subject: [PATCH] Fix format_flt_show_trace_record writing is out of bounds --- src/observer/virtual_table/ob_virtual_show_trace.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/observer/virtual_table/ob_virtual_show_trace.cpp b/src/observer/virtual_table/ob_virtual_show_trace.cpp index 4fe6b09771..2e62eab53f 100644 --- a/src/observer/virtual_table/ob_virtual_show_trace.cpp +++ b/src/observer/virtual_table/ob_virtual_show_trace.cpp @@ -489,7 +489,8 @@ int ObVirtualShowTrace::format_flt_show_trace_record(sql::ObFLTShowTraceRec &rec const char *color_end = "\033[0m"; char* name_buf = NULL; const sql::ObFLTShowTraceRec::trace_formatter::NameLeftPadding &pad = rec.formatter_; - int64_t len = pad.level_*8 + rec.data_.span_name_.length(); + int pad_len = max(sizeof("└── "), max(sizeof("├── "), max(sizeof("│ "), sizeof(" ")))); + int64_t len = pad.level_*pad_len + rec.data_.span_name_.length(); name_buf = static_cast(alloc_.alloc(len)); if (NULL == name_buf) { ret = OB_ALLOCATE_MEMORY_FAILED;