@@ -22,6 +22,8 @@ using LineageInfo = ProcessSignalFormatter::LineageInfo;
2222using Timestamp = google::protobuf::Timestamp;
2323using TimeUtil = google::protobuf::util::TimeUtil;
2424
25+ using EventExtractor = system_inspector::EventExtractor;
26+
2527namespace {
2628
2729enum ProcessSignalType {
@@ -59,7 +61,7 @@ std::string extract_proc_args(sinsp_threadinfo* tinfo) {
5961ProcessSignalFormatter::ProcessSignalFormatter (
6062 sinsp* inspector,
6163 const CollectorConfig& config) : event_names_(EventNames::GetInstance()),
62- event_extractor_ (std::make_unique<system_inspector:: EventExtractor>()),
64+ event_extractor_ (std::make_unique<EventExtractor>()),
6365 container_metadata_(inspector),
6466 config_(config) {
6567 event_extractor_->Init (inspector);
@@ -163,10 +165,10 @@ ProcessSignal* ProcessSignalFormatter::CreateProcessSignal(sinsp_evt* event) {
163165 }
164166
165167 // set user and group id credentials
166- if (const uint32_t * uid = event_extractor_-> get_uid (event)) {
168+ if (auto uid = EventExtractor:: get_uid (event)) {
167169 signal->set_uid (*uid);
168170 }
169- if (const uint32_t * gid = event_extractor_-> get_gid (event)) {
171+ if (auto gid = EventExtractor:: get_gid (event)) {
170172 signal->set_gid (*gid);
171173 }
172174
@@ -176,7 +178,7 @@ ProcessSignal* ProcessSignalFormatter::CreateProcessSignal(sinsp_evt* event) {
176178 signal->set_allocated_time (timestamp);
177179
178180 // set container_id
179- if (const std::string* container_id = event_extractor_-> get_container_id (event)) {
181+ if (auto container_id = EventExtractor:: get_container_id (event)) {
180182 signal->set_container_id (*container_id);
181183 }
182184
@@ -232,16 +234,25 @@ ProcessSignal* ProcessSignalFormatter::CreateProcessSignal(sinsp_threadinfo* tin
232234 signal->set_pid (tinfo->m_pid );
233235
234236 // set user and group id credentials
235- signal->set_uid (tinfo->m_user .uid ());
236- signal->set_gid (tinfo->m_group .gid ());
237+ auto uid = EventExtractor::get_uid (tinfo);
238+ if (uid) {
239+ signal->set_uid (*uid);
240+ }
241+ auto gid = EventExtractor::get_gid (tinfo);
242+ if (gid) {
243+ signal->set_gid (*gid);
244+ }
237245
238246 // set time
239247 auto timestamp = Allocate<Timestamp>();
240248 *timestamp = TimeUtil::NanosecondsToTimestamp (tinfo->m_clone_ts );
241249 signal->set_allocated_time (timestamp);
242250
243251 // set container_id
244- signal->set_container_id (tinfo->m_container_id );
252+ auto container_id = EventExtractor::get_container_id (tinfo);
253+ if (container_id) {
254+ signal->set_container_id (*container_id);
255+ }
245256
246257 // set process lineage
247258 std::vector<LineageInfo> lineage;
@@ -265,7 +276,7 @@ std::string ProcessSignalFormatter::ProcessDetails(sinsp_evt* event) {
265276 std::stringstream ss;
266277 const std::string* path = event_extractor_->get_exepath (event);
267278 const std::string* name = event_extractor_->get_comm (event);
268- const std::string* container_id = event_extractor_-> get_container_id (event);
279+ auto container_id = EventExtractor:: get_container_id (event);
269280 const char * args = event_extractor_->get_proc_args (event);
270281 const int64_t * pid = event_extractor_->get_pid (event);
271282
@@ -347,7 +358,7 @@ void ProcessSignalFormatter::GetProcessLineage(sinsp_threadinfo* tinfo,
347358 // all platforms.
348359 //
349360 if (pt->m_vpid == 0 ) {
350- if (pt-> m_container_id . empty ( )) {
361+ if (! EventExtractor::get_container_id (pt )) {
351362 return false ;
352363 }
353364 } else if (pt->m_pid == pt->m_vpid ) {
@@ -361,7 +372,10 @@ void ProcessSignalFormatter::GetProcessLineage(sinsp_threadinfo* tinfo,
361372 // Collapse parent child processes that have the same path
362373 if (lineage.empty () || (lineage.back ().parent_exec_file_path () != pt->m_exepath )) {
363374 LineageInfo info;
364- info.set_parent_uid (pt->m_user .uid ());
375+ auto uid = EventExtractor::get_uid (pt);
376+ if (uid) {
377+ info.set_parent_uid (*uid);
378+ }
365379 info.set_parent_exec_file_path (pt->m_exepath );
366380 lineage.push_back (info);
367381 }
0 commit comments