コード例 #1
0
ファイル: settings.c プロジェクト: JozLes77/FreeRDP
void freerdp_settings_free(rdpSettings* settings)
{
	if (settings)
	{
		free(settings->ServerHostname);
		free(settings->Username);
		free(settings->Password);
		free(settings->Domain);
		free(settings->PasswordHash);
		free(settings->AlternateShell);
		free(settings->ShellWorkingDirectory);
		free(settings->ComputerName);
		free(settings->ChannelDefArray);
		free(settings->MonitorDefArray);
		free(settings->ClientAddress);
		free(settings->ClientDir);
		free(settings->PermittedTLSCiphers);
		free(settings->CertificateFile);
		free(settings->PrivateKeyFile);
		free(settings->ConnectionFile);
		free(settings->AssistanceFile);
		free(settings->ReceivedCapabilities);
		free(settings->OrderSupport);
		free(settings->ClientHostname);
		free(settings->ClientProductId);
		free(settings->ServerRandom);
		free(settings->ClientRandom);
		free(settings->ServerCertificate);
		free(settings->RdpKeyFile);
		certificate_free(settings->RdpServerCertificate);
		free(settings->ClientAutoReconnectCookie);
		free(settings->ServerAutoReconnectCookie);
		free(settings->ClientTimeZone);
		free(settings->BitmapCacheV2CellInfo);
		free(settings->GlyphCache);
		free(settings->FragCache);
		key_free(settings->RdpServerRsaKey);
		free(settings->ConfigPath);
		free(settings->CurrentPath);
		free(settings->HomePath);
		free(settings->LoadBalanceInfo);
		free(settings->TargetNetAddress);
		free(settings->RedirectionTargetFQDN);
		free(settings->RedirectionTargetNetBiosName);
		free(settings->RedirectionUsername);
		free(settings->RedirectionDomain);
		free(settings->RedirectionPassword);
		free(settings->RedirectionTsvUrl);
		free(settings->RemoteAssistanceSessionId);
		free(settings->AuthenticationServiceClass);
		freerdp_target_net_addresses_free(settings);
		freerdp_device_collection_free(settings);
		freerdp_static_channel_collection_free(settings);
		freerdp_dynamic_channel_collection_free(settings);
		free(settings->SettingsModified);
		free(settings);
	}
}
コード例 #2
0
ファイル: redirection.c プロジェクト: 10084462/FreeRDP
int rdp_redirection_apply_settings(rdpRdp* rdp)
{
	rdpSettings* settings = rdp->settings;
	rdpRedirection* redirection = rdp->redirection;

	settings->RedirectionFlags = redirection->flags;
	settings->RedirectedSessionId = redirection->sessionID;

	if (settings->RedirectionFlags & LB_LOAD_BALANCE_INFO)
	{
		/* LoadBalanceInfo may not contain a null terminator */
		free(settings->LoadBalanceInfo);
		settings->LoadBalanceInfoLength = redirection->LoadBalanceInfoLength;
		settings->LoadBalanceInfo = (BYTE*) malloc(settings->LoadBalanceInfoLength);
		CopyMemory(settings->LoadBalanceInfo, redirection->LoadBalanceInfo, settings->LoadBalanceInfoLength);
	}
	else
	{
		/**
		 * Free previous LoadBalanceInfo, if any, otherwise it may end up
		 * being reused for the redirected session, which is not what we want.
		 */

		free(settings->LoadBalanceInfo);
		settings->LoadBalanceInfo = NULL;
		settings->LoadBalanceInfoLength = 0;
	}

	if (settings->RedirectionFlags & LB_TARGET_FQDN)
	{
		free(settings->RedirectionTargetFQDN);
		settings->RedirectionTargetFQDN = _strdup(redirection->TargetFQDN);
	}
	else if (settings->RedirectionFlags & LB_TARGET_NET_ADDRESS)
	{
		free(settings->TargetNetAddress);
		settings->TargetNetAddress = _strdup(redirection->TargetNetAddress);
	}
	else if (settings->RedirectionFlags & LB_TARGET_NETBIOS_NAME)
	{
		free(settings->RedirectionTargetNetBiosName);
		settings->RedirectionTargetNetBiosName = _strdup(redirection->TargetNetBiosName);
	}

	if (settings->RedirectionFlags & LB_USERNAME)
	{
		free(settings->RedirectionUsername);
		settings->RedirectionUsername = _strdup(redirection->Username);
	}

	if (settings->RedirectionFlags & LB_DOMAIN)
	{
		free(settings->RedirectionDomain);
		settings->RedirectionDomain = _strdup(redirection->Domain);
	}

	if (settings->RedirectionFlags & LB_PASSWORD)
	{
		/* Password may be a cookie without a null terminator */
		free(settings->RedirectionPassword);
		settings->RedirectionPasswordLength = redirection->PasswordLength;
		settings->RedirectionPassword = (BYTE*) malloc(settings->RedirectionPasswordLength);
		CopyMemory(settings->RedirectionPassword, redirection->Password, settings->RedirectionPasswordLength);
	}

	if (settings->RedirectionFlags & LB_CLIENT_TSV_URL)
	{
		/* TsvUrl may not contain a null terminator */
		free(settings->RedirectionTsvUrl);
		settings->RedirectionTsvUrlLength = redirection->TsvUrlLength;
		settings->RedirectionTsvUrl = (BYTE*) malloc(settings->RedirectionTsvUrlLength);
		CopyMemory(settings->RedirectionTsvUrl, redirection->TsvUrl, settings->RedirectionTsvUrlLength);
	}

	if (settings->RedirectionFlags & LB_TARGET_NET_ADDRESSES)
	{
		UINT32 i;

		freerdp_target_net_addresses_free(settings);

		settings->TargetNetAddressCount = redirection->TargetNetAddressesCount;
		settings->TargetNetAddresses = (char**) malloc(sizeof(char*) * settings->TargetNetAddressCount);

		for (i = 0; i < settings->TargetNetAddressCount; i++)
		{
			settings->TargetNetAddresses[i] = _strdup(redirection->TargetNetAddresses[i]);
		}
	}

	return 0;
}
コード例 #3
0
ファイル: settings.c プロジェクト: DavBfr/FreeRDP
void freerdp_settings_free(rdpSettings* settings)
{
    if (!settings)
	return;
    free(settings->ServerHostname);
    free(settings->Username);
    free(settings->Password);
    free(settings->Domain);
    free(settings->PasswordHash);
    free(settings->AlternateShell);
    free(settings->ShellWorkingDirectory);
    free(settings->ComputerName);
    free(settings->ChannelDefArray);
    free(settings->MonitorDefArray);
    free(settings->MonitorIds);
    free(settings->ClientAddress);
    free(settings->ClientDir);
    free(settings->AllowedTlsCiphers);
    free(settings->NtlmSamFile);
    free(settings->CertificateFile);
    free(settings->PrivateKeyFile);
    free(settings->ConnectionFile);
    free(settings->AssistanceFile);
    free(settings->ReceivedCapabilities);
    free(settings->OrderSupport);
    free(settings->ClientHostname);
    free(settings->ClientProductId);
    free(settings->ServerRandom);
    free(settings->ClientRandom);
    free(settings->ServerCertificate);
    free(settings->RdpKeyFile);
    certificate_free(settings->RdpServerCertificate);
    free(settings->CertificateContent);
    free(settings->PrivateKeyContent);
    free(settings->RdpKeyContent);
    free(settings->ClientAutoReconnectCookie);
    free(settings->ServerAutoReconnectCookie);
    free(settings->ClientTimeZone);
    free(settings->BitmapCacheV2CellInfo);
    free(settings->GlyphCache);
    free(settings->FragCache);
    key_free(settings->RdpServerRsaKey);
    free(settings->ConfigPath);
    free(settings->CurrentPath);
    free(settings->HomePath);
    free(settings->LoadBalanceInfo);
    free(settings->TargetNetAddress);
    free(settings->RedirectionTargetFQDN);
    free(settings->RedirectionTargetNetBiosName);
    free(settings->RedirectionUsername);
    free(settings->RedirectionDomain);
    free(settings->RedirectionPassword);
    free(settings->RedirectionTsvUrl);
    free(settings->RemoteAssistanceSessionId);
    free(settings->RemoteAssistancePassword);
    free(settings->RemoteAssistancePassStub);
    free(settings->RemoteAssistanceRCTicket);
    free(settings->AuthenticationServiceClass);
    free(settings->GatewayHostname);
    free(settings->GatewayUsername);
    free(settings->GatewayPassword);
    free(settings->GatewayDomain);
    free(settings->CertificateName);
    free(settings->DynamicDSTTimeZoneKeyName);
    free(settings->PreconnectionBlob);
    free(settings->KerberosKdc);
    free(settings->KerberosRealm);
    free(settings->DumpRemoteFxFile);
    free(settings->PlayRemoteFxFile);
    free(settings->RemoteApplicationName);
    free(settings->RemoteApplicationIcon);
    free(settings->RemoteApplicationProgram);
    free(settings->RemoteApplicationFile);
    free(settings->RemoteApplicationGuid);
    free(settings->RemoteApplicationCmdLine);
    free(settings->ImeFileName);
    free(settings->DrivesToRedirect);
    free(settings->WindowTitle);
    free(settings->WmClass);

    freerdp_target_net_addresses_free(settings);
    freerdp_device_collection_free(settings);
    freerdp_static_channel_collection_free(settings);
    freerdp_dynamic_channel_collection_free(settings);
    free(settings->SettingsModified);
    free(settings);
}