Completes previous commit r1759, making redirect server string

dynamically allocated when used.



git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1760 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Henrik Andersson 2013-11-26 11:40:45 +00:00
parent a080b6750e
commit e63a44acb1
2 changed files with 11 additions and 5 deletions

View File

@ -115,6 +115,7 @@ uint32 g_rdp5_performanceflags =
/* Session Directory redirection */ /* Session Directory redirection */
RD_BOOL g_redirect = False; RD_BOOL g_redirect = False;
char *g_redirect_server; char *g_redirect_server;
uint32 g_redirect_server_len;
char g_redirect_domain[16]; char g_redirect_domain[16];
char g_redirect_password[64]; char g_redirect_password[64];
char *g_redirect_username; char *g_redirect_username;

15
rdp.c
View File

@ -65,6 +65,7 @@ extern RDPCOMP g_mppc_dict;
/* Session Directory support */ /* Session Directory support */
extern RD_BOOL g_redirect; extern RD_BOOL g_redirect;
extern char *g_redirect_server; extern char *g_redirect_server;
extern uint32 g_redirect_server_len;
extern char g_redirect_domain[16]; extern char g_redirect_domain[16];
extern char g_redirect_password[64]; extern char g_redirect_password[64];
extern char *g_redirect_username; extern char *g_redirect_username;
@ -1495,10 +1496,14 @@ process_redirect_pdu(STREAM s /*, uint32 * ext_disc_reason */ )
if (g_redirect_flags & PDU_REDIRECT_HAS_IP) if (g_redirect_flags & PDU_REDIRECT_HAS_IP)
{ {
/* read length of ip string */ /* read length of ip string */
in_uint32_le(s, len); in_uint32_le(s, g_redirect_server_len);
if (g_redirect_server)
free(g_redirect_server);
g_redirect_server = xmalloc(g_redirect_server_len);
/* read ip string */ /* read ip string */
rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), len); rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), g_redirect_server_len);
} }
if (g_redirect_flags & PDU_REDIRECT_HAS_LOAD_BALANCE_INFO) if (g_redirect_flags & PDU_REDIRECT_HAS_LOAD_BALANCE_INFO)
@ -1564,14 +1569,14 @@ process_redirect_pdu(STREAM s /*, uint32 * ext_disc_reason */ )
if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_FQDN) if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_FQDN)
{ {
/* read length of fqdn string */ /* read length of fqdn string */
in_uint32_le(s, len); in_uint32_le(s, g_redirect_server_len);
if (g_redirect_server) if (g_redirect_server)
free(g_redirect_server); free(g_redirect_server);
g_redirect_server = xmalloc(len); g_redirect_server = xmalloc(g_redirect_server_len);
/* read fqdn string */ /* read fqdn string */
rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), len); rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), g_redirect_server_len);
} }
if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_NETBIOS) if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_NETBIOS)