Solaris: fix memory allocation for usernames (some empty usernames in 32-bit builds)

This commit is contained in:
Guy M. Broome 2018-03-05 16:46:52 -05:00 committed by Hisham Muhammad
parent da4010783e
commit 0f71db9d82
1 changed files with 4 additions and 12 deletions

View File

@ -62,16 +62,6 @@ typedef struct SolarisProcessList_ {
}*/ }*/
static void setCommand(Process* process, const char* command, int len) {
if (process->comm && process->commLen >= len) {
strncpy(process->comm, command, len + 1);
} else {
free(process->comm);
process->comm = xStrdup(command);
}
process->commLen = len;
}
char* SolarisProcessList_readZoneName(kstat_ctl_t* kd, SolarisProcess* sproc) { char* SolarisProcessList_readZoneName(kstat_ctl_t* kd, SolarisProcess* sproc) {
char* zname; char* zname;
if ( sproc->zoneid == 0 ) { if ( sproc->zoneid == 0 ) {
@ -326,7 +316,8 @@ void ProcessList_goThroughEntries(ProcessList* this) {
proc->user = UsersTable_getRef(this->usersTable, proc->st_uid); proc->user = UsersTable_getRef(this->usersTable, proc->st_uid);
proc->nlwp = _psinfo.pr_nlwp; proc->nlwp = _psinfo.pr_nlwp;
proc->session = _pstatus.pr_sid; proc->session = _pstatus.pr_sid;
setCommand(proc,_psinfo.pr_fname,PRFNSZ); proc->comm = xStrdup(_psinfo.pr_fname);
proc->commLen = strnlen(_psinfo.pr_fname,PRFNSZ);
sproc->zname = SolarisProcessList_readZoneName(spl->kd,sproc); sproc->zname = SolarisProcessList_readZoneName(spl->kd,sproc);
proc->majflt = _prusage.pr_majf; proc->majflt = _prusage.pr_majf;
proc->minflt = _prusage.pr_minf; proc->minflt = _prusage.pr_minf;
@ -355,7 +346,8 @@ void ProcessList_goThroughEntries(ProcessList* this) {
proc->pgrp = _psinfo.pr_pgid; proc->pgrp = _psinfo.pr_pgid;
proc->nlwp = _psinfo.pr_nlwp; proc->nlwp = _psinfo.pr_nlwp;
proc->user = UsersTable_getRef(this->usersTable, proc->st_uid); proc->user = UsersTable_getRef(this->usersTable, proc->st_uid);
setCommand(proc,_psinfo.pr_fname,PRFNSZ); proc->comm = xStrdup(_psinfo.pr_fname);
proc->commLen = strnlen(_psinfo.pr_fname,PRFNSZ);
sproc->zname = SolarisProcessList_readZoneName(spl->kd,sproc); sproc->zname = SolarisProcessList_readZoneName(spl->kd,sproc);
proc->majflt = _prusage.pr_majf; proc->majflt = _prusage.pr_majf;
proc->minflt = _prusage.pr_minf; proc->minflt = _prusage.pr_minf;