static VixError VixToolsImpersonateUserImplEx(char const *credentialTypeStr,
int credentialType,
char const *obfuscatedNamePassword,
+ Bool loadUserProfile,
void **userToken);
static VixError VixToolsDoesUsernameMatchCurrentUser(const char *username);
VixError GuestAuthPasswordAuthenticateImpersonate(
char const *obfuscatedNamePassword,
+ Bool loadUserProfile,
void **userToken);
VixError GuestAuthSAMLAuthenticateAndImpersonate(
char const *obfuscatedNamePassword,
+ Bool loadUserProfile,
void **userToken);
void GuestAuthUnimpersonate();
#endif
if (NULL == userToken) {
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
}
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
recursive = deleteDirectoryRequest->recursive;
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
}
readRequest = (VixMsgReadEnvironmentVariablesRequest *) requestMsg;
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
}
#endif
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
destPtr = resultBuffer;
*destPtr = 0;
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
listRequest = (VixMsgListProcessesExRequest *) requestMsg;
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
int sysErrno;
#endif
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
}
#endif
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
Bool impersonatingVMWareUser = FALSE;
void *userToken = NULL;
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
goto abort;
}
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
VixError
VixToolsImpersonateUser(VixCommandRequestHeader *requestMsg, // IN
+ Bool loadUserProfile, // IN
void **userToken) // OUT
{
VixError err = VIX_OK;
err = VixToolsImpersonateUserImplEx(NULL,
credentialType,
credentialField,
+ loadUserProfile,
userToken);
break;
}
err = VixToolsImpersonateUserImplEx(NULL,
credentialType,
NULL,
+ loadUserProfile,
userToken);
break;
case VIX_USER_CREDENTIAL_NAME_PASSWORD:
err = VixToolsImpersonateUserImplEx(NULL,
credentialType,
credentialField,
+ loadUserProfile,
userToken);
if ((VIX_OK != err)
&& ((VIX_USER_CREDENTIAL_NAME_PASSWORD_OBFUSCATED == credentialType)
err = VixToolsImpersonateUserImplEx(NULL,
credentialType,
credentialField,
+ loadUserProfile,
userToken);
break;
}
return(VIX_OK == VixToolsImpersonateUserImplEx(credentialTypeStr,
credentialType,
obfuscatedNamePassword,
+ TRUE,
userToken));
} // VixToolsImpersonateUserImpl
VixToolsImpersonateUserImplEx(char const *credentialTypeStr, // IN
int credentialType, // IN
char const *obfuscatedNamePassword, // IN
+ Bool loadUserProfile, // IN
void **userToken) // OUT
{
VixError err = VIX_E_INVALID_LOGIN_CREDENTIALS;
VIX_USER_CREDENTIAL_NAME_PASSWORD_OBFUSCATED == credentialType)) {
err =
GuestAuthPasswordAuthenticateImpersonate(obfuscatedNamePassword,
+ loadUserProfile,
userToken);
}
else if (VIX_USER_CREDENTIAL_SAML_BEARER_TOKEN == credentialType) {
if (GuestAuthEnabled()) {
err = GuestAuthSAMLAuthenticateAndImpersonate(obfuscatedNamePassword,
+ loadUserProfile,
userToken);
} else {
err = VIX_E_NOT_SUPPORTED;
goto abort;
}
+ /*
+ * When transferring file to/from guest, VixToolsProcessHgfsPacket is
+ * repeatedly called. Skip loading user profile, which is unnecessary
+ * here, to minimize performance impact.
+ */
err = VixToolsImpersonateUser((VixCommandRequestHeader *) requestMsg,
+ FALSE, // Do not load user profile
&userToken);
if (VIX_OK != err) {
goto abort;
*destPtr = 0;
endDestPtr = resultBuffer + sizeof(resultBuffer);
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
}
err = VixToolsImpersonateUser((VixCommandRequestHeader *) requestMsg,
+ TRUE,
&userToken);
if (VIX_OK != err) {
goto abort;
ipAddr[0] = '\0';
subnetMask[0] = '\0';
- err = VixToolsImpersonateUser(requestMsg, &userToken);
+ err = VixToolsImpersonateUser(requestMsg, TRUE, &userToken);
if (VIX_OK != err) {
goto abort;
}
}
err = VixToolsImpersonateUser((VixCommandRequestHeader *) requestMsg,
+ TRUE,
&userToken);
if (VIX_OK != err) {
goto abort;
}
err = VixToolsImpersonateUser((VixCommandRequestHeader *) requestMsg,
+ TRUE,
&userToken);
if (VIX_OK != err) {
goto abort;
}
err = VixToolsImpersonateUser((VixCommandRequestHeader *) requestMsg,
+ TRUE,
&userToken);
if (VIX_OK != err) {
goto abort;
req = (VixMsgListMappedAliasesRequest *) requestMsg;
err = VixToolsImpersonateUser((VixCommandRequestHeader *) requestMsg,
+ TRUE,
&userToken);
if (VIX_OK != err) {
goto abort;
VixError
GuestAuthPasswordAuthenticateImpersonate(
char const *obfuscatedNamePassword, // IN
+ Bool loadUserProfile, // IN
void **userToken) // OUT
{
#if SUPPORT_VGAUTH
Bool impersonated = FALSE;
extraParams[0].name = VGAUTH_PARAM_LOAD_USER_PROFILE;
- extraParams[0].value = VGAUTH_PARAM_VALUE_TRUE;
+ extraParams[0].value = loadUserProfile ? VGAUTH_PARAM_VALUE_TRUE :
+ VGAUTH_PARAM_VALUE_FALSE;
err = VixMsg_DeObfuscateNamePassword(obfuscatedNamePassword,
&username,
VixError
GuestAuthSAMLAuthenticateAndImpersonate(
char const *obfuscatedNamePassword, // IN
+ Bool loadUserProfile, // IN
void **userToken) // OUT
{
#if SUPPORT_VGAUTH
Bool impersonated = FALSE;
extraParams[0].name = VGAUTH_PARAM_LOAD_USER_PROFILE;
- extraParams[0].value = VGAUTH_PARAM_VALUE_TRUE;
+ extraParams[0].value = loadUserProfile ? VGAUTH_PARAM_VALUE_TRUE :
+ VGAUTH_PARAM_VALUE_FALSE;
err = VixMsg_DeObfuscateNamePassword(obfuscatedNamePassword,
&token,