Changeset 41919 in vbox for trunk/src/VBox/Runtime/r3/posix
- Timestamp:
- Jun 27, 2012 8:06:27 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78783
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r3/posix/process-posix.cpp
r39801 r41919 38 38 #include <sys/wait.h> 39 39 #include <signal.h> 40 #include <pwd.h> 40 41 41 42 #include <iprt/process.h> … … 146 147 } 147 148 149 150 RTR3DECL(int) RTProcQueryUsername(RTPROCESS hProcess, char *pszUser, size_t cbUser, 151 size_t *pcbUser) 152 { 153 AssertPtrReturn(pszUser, VERR_INVALID_POINTER); 154 AssertReturn(cbUser > 0, VERR_INVALID_PARAMETER); 155 AssertPtrReturn(pcbUser, VERR_INVALID_POINTER); 156 157 if (hProcess != RTProcSelf()) 158 return VERR_NOT_SUPPORTED; 159 160 int32_t cbPwdMax = sysconf(_SC_GETPW_R_SIZE_MAX); 161 if (cbPwdMax == -1) 162 return RTErrConvertFromErrno(errno); 163 164 char *pbBuf = (char *)RTMemAllocZ(cbPwdMax); 165 if (!pbBuf) 166 return VERR_NO_MEMORY; 167 168 struct passwd Pwd, *pPwd; 169 int rc = getpwuid_r(geteuid(), &Pwd, pbBuf, cbPwdMax, &pPwd); 170 if (!rc) 171 { 172 size_t cbPwdUser = strlen(pPwd->pw_name) + 1; 173 174 *pcbUser = cbPwdUser; 175 176 if (cbPwdUser > cbUser) 177 rc = VERR_BUFFER_OVERFLOW; 178 else 179 { 180 memcpy(pszUser, pPwd->pw_name, cbPwdUser); 181 rc = VINF_SUCCESS; 182 } 183 } 184 else 185 rc = RTErrConvertFromErrno(rc); 186 187 RTMemFree(pbBuf); 188 return rc; 189 } 190 191
Note:
See TracChangeset
for help on using the changeset viewer.