56 lines
1.7 KiB
Diff
56 lines
1.7 KiB
Diff
From 341bd6e8292b96ff5cf02bbaeedf447df18778aa Mon Sep 17 00:00:00 2001
|
|
From: fly_1997 <flylove7@outlook.com>
|
|
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 <iostream>
|
|
#include <string>
|
|
#include <vector>
|
|
+#include <fstream>
|
|
#include <unordered_map>
|
|
#include <csignal>
|
|
#include <dirent.h>
|
|
@@ -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
|
|
|