From 341bd6e8292b96ff5cf02bbaeedf447df18778aa Mon Sep 17 00:00:00 2001 From: fly_1997 Date: Mon, 15 Jul 2024 14:03:39 +0800 Subject: [PATCH] fix out of bounds array --- thread_collector/thread_collector.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/thread_collector/thread_collector.cpp b/thread_collector/thread_collector.cpp index f1d9cc4..cb99bba 100644 --- a/thread_collector/thread_collector.cpp +++ b/thread_collector/thread_collector.cpp @@ -11,8 +11,10 @@ ******************************************************************************/ #include "interface.h" #include "thread_info.h" +#include #include #include +#include #include #include #include @@ -20,7 +22,6 @@ char thread_name[] = "thread_collector"; const int CYCLE_SIZE = 500; -const int MAX_NAME_LENGTH = 20; static DataRingBuf ring_buf; static DataBuf data_buf; static ThreadInfo threads[THREAD_NUM]; @@ -60,14 +61,13 @@ static void clear_invalid_tid(int &num) { static ThreadInfo get_thread_info(int pid, int tid) { std::string s_path = "/proc/" + std::to_string(pid) + "/task/" + std::to_string(tid) + "/comm"; - FILE *s_file = fopen(s_path.c_str(), "r"); - if (s_file == nullptr) { + std::ifstream input_file(s_path); + if (!input_file) { return ThreadInfo{}; } - char name[MAX_NAME_LENGTH]; - fscanf(s_file, "%s", name); - fclose(s_file); - return ThreadInfo{pid, tid, std::string(name)}; + std::string name; + input_file >> name; + return ThreadInfo{pid, tid, name}; } static bool process_not_change(struct stat *task_stat, const std::string &task_path, int pid) { -- 2.33.0