@@ -155,9 +155,9 @@ void sinsp_threadinfo::init()
155155 m_exe_ino_ctime_duration_clone_ts = 0 ;
156156 m_exe_ino_ctime_duration_pidns_start = 0 ;
157157
158- memset (& m_user, 0 , sizeof (scap_userinfo) );
159- memset (&m_group, 0 , sizeof (scap_groupinfo) );
160- memset (&m_loginuser, 0 , sizeof (scap_userinfo) );
158+ m_user = std::make_shared<sinsp_userinfo>( );
159+ m_loginuser = std::make_shared<sinsp_userinfo>( );
160+ m_group = std::make_shared<sinsp_groupinfo>( );
161161}
162162
163163sinsp_threadinfo::~sinsp_threadinfo ()
@@ -574,19 +574,32 @@ void sinsp_threadinfo::set_user(uint32_t uid)
574574 if (!user)
575575 {
576576 auto notify = m_inspector->is_live () || m_inspector->is_syscall_plugin ();
577- user = m_inspector->m_usergroup_manager .add_user (m_container_id, m_pid, uid, m_group. gid , NULL , NULL , NULL , notify);
577+ user = m_inspector->m_usergroup_manager .add_user (m_container_id, m_pid, uid, m_group-> gid , NULL , NULL , NULL , notify);
578578 }
579+
579580 if (user)
580581 {
581- memcpy (&m_user, user, sizeof (scap_userinfo));
582+ m_user->uid = user->uid ;
583+ m_user->gid = m_group->gid ;
584+
585+ if (m_inspector->m_user_details_enabled )
586+ {
587+ m_user->name .assign (user->name , sizeof (user->name ));
588+ m_user->homedir .assign (user->homedir , sizeof (user->homedir ));
589+ m_user->shell .assign (user->shell , sizeof (user->shell ));
590+ }
582591 }
583592 else
584593 {
585- m_user.uid = uid;
586- m_user.gid = m_group.gid ;
587- strlcpy (m_user.name , (uid == 0 ) ? " root" : " <NA>" , sizeof (m_user.name ));
588- strlcpy (m_user.homedir , (uid == 0 ) ? " /root" : " <NA>" , sizeof (m_user.homedir ));
589- strlcpy (m_user.shell , " <NA>" , sizeof (m_user.shell ));
594+ m_user->uid = uid;
595+ m_user->gid = m_group->gid ;
596+
597+ if (m_inspector->m_user_details_enabled )
598+ {
599+ m_user->name = (uid == 0 ) ? " root" : " <NA>" ;
600+ m_user->homedir = (uid == 0 ) ? " /root" : " <NA>" ;
601+ m_user->shell = " <NA>" ;
602+ }
590603 }
591604}
592605
@@ -600,30 +613,51 @@ void sinsp_threadinfo::set_group(uint32_t gid)
600613 }
601614 if (group)
602615 {
603- memcpy (&m_group, group, sizeof (scap_groupinfo));
616+ m_group->gid = group->gid ;
617+
618+ if (m_inspector->m_user_details_enabled )
619+ {
620+ m_group->name .assign (group->name , sizeof (group->name ));
621+ }
604622 }
605623 else
606624 {
607- m_group.gid = gid;
608- strlcpy (m_group.name , (gid == 0 ) ? " root" : " <NA>" , sizeof (m_group.name ));
625+ m_group->gid = gid;
626+ if (m_inspector->m_user_details_enabled )
627+ {
628+ m_group->name = (gid == 0 ) ? " root" : " <NA>" ;
629+ }
609630 }
610- m_user. gid = m_group. gid ;
631+ m_user-> gid = m_group-> gid ;
611632}
612633
613634void sinsp_threadinfo::set_loginuser (uint32_t loginuid)
614635{
615636 scap_userinfo *login_user = m_inspector->m_usergroup_manager .get_user (m_container_id, loginuid);
637+
616638 if (login_user)
617639 {
618- memcpy (&m_loginuser, login_user, sizeof (scap_userinfo));
640+ m_loginuser->uid = login_user->uid ;
641+ m_loginuser->gid = m_group->gid ;
642+
643+ if (m_inspector->m_user_details_enabled )
644+ {
645+ m_loginuser->name .assign (login_user->name , sizeof (login_user->name ));
646+ m_loginuser->homedir .assign (login_user->homedir , sizeof (login_user->homedir ));
647+ m_loginuser->shell .assign (login_user->shell , sizeof (login_user->shell ));
648+ }
619649 }
620650 else
621651 {
622- m_loginuser.uid = loginuid;
623- m_loginuser.gid = m_group.gid ;
624- strlcpy (m_loginuser.name , loginuid == 0 ? " root" : " <NA>" , sizeof (m_loginuser.name ));
625- strlcpy (m_loginuser.homedir , loginuid == 0 ? " /root" : " <NA>" , sizeof (m_loginuser.homedir ));
626- strlcpy (m_loginuser.shell , " <NA>" , sizeof (m_loginuser.shell ));
652+ m_loginuser->uid = loginuid;
653+ m_loginuser->gid = m_group->gid ;
654+
655+ if (m_inspector->m_user_details_enabled )
656+ {
657+ m_loginuser->name = loginuid == 0 ? " root" : " <NA>" ;
658+ m_loginuser->homedir = loginuid == 0 ? " /root" : " <NA>" ;
659+ m_loginuser->shell = " <NA>" ;
660+ }
627661 }
628662}
629663
@@ -1945,8 +1979,8 @@ void sinsp_thread_manager::thread_to_scap(sinsp_threadinfo& tinfo, scap_threadi
19451979
19461980 sctinfo->flags = tinfo.m_flags ;
19471981 sctinfo->fdlimit = tinfo.m_fdlimit ;
1948- sctinfo->uid = tinfo.m_user . uid ;
1949- sctinfo->gid = tinfo.m_group . gid ;
1982+ sctinfo->uid = tinfo.m_user -> uid ;
1983+ sctinfo->gid = tinfo.m_group -> gid ;
19501984 sctinfo->vmsize_kb = tinfo.m_vmsize_kb ;
19511985 sctinfo->vmrss_kb = tinfo.m_vmrss_kb ;
19521986 sctinfo->vmswap_kb = tinfo.m_vmswap_kb ;
@@ -1955,7 +1989,7 @@ void sinsp_thread_manager::thread_to_scap(sinsp_threadinfo& tinfo, scap_threadi
19551989 sctinfo->vtid = tinfo.m_vtid ;
19561990 sctinfo->vpid = tinfo.m_vpid ;
19571991 sctinfo->fdlist = NULL ;
1958- sctinfo->loginuid = tinfo.m_loginuser . uid ;
1992+ sctinfo->loginuid = tinfo.m_loginuser -> uid ;
19591993 sctinfo->filtered_out = false ;
19601994}
19611995
@@ -2181,9 +2215,9 @@ threadinfo_map_t::ptr_t sinsp_thread_manager::get_thread_ref(int64_t tid, bool q
21812215 newti->m_not_expired_children = 0 ;
21822216 newti->m_comm = " <NA>" ;
21832217 newti->m_exe = " <NA>" ;
2184- newti->m_user . uid = 0xffffffff ;
2185- newti->m_group . gid = 0xffffffff ;
2186- newti->m_loginuser . uid = 0xffffffff ;
2218+ newti->m_user -> uid = 0xffffffff ;
2219+ newti->m_group -> gid = 0xffffffff ;
2220+ newti->m_loginuser -> uid = 0xffffffff ;
21872221 }
21882222
21892223 //
0 commit comments