From e63a44acb156169f475c8d931508e4c9e6cf9fa8 Mon Sep 17 00:00:00 2001 From: Henrik Andersson Date: Tue, 26 Nov 2013 11:40:45 +0000 Subject: [PATCH] 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 --- rdesktop.c | 1 + rdp.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/rdesktop.c b/rdesktop.c index 6dbe9c2..3b1efc7 100644 --- a/rdesktop.c +++ b/rdesktop.c @@ -115,6 +115,7 @@ uint32 g_rdp5_performanceflags = /* Session Directory redirection */ RD_BOOL g_redirect = False; char *g_redirect_server; +uint32 g_redirect_server_len; char g_redirect_domain[16]; char g_redirect_password[64]; char *g_redirect_username; diff --git a/rdp.c b/rdp.c index f0bbfaa..a0d4c78 100644 --- a/rdp.c +++ b/rdp.c @@ -65,6 +65,7 @@ extern RDPCOMP g_mppc_dict; /* Session Directory support */ extern RD_BOOL g_redirect; extern char *g_redirect_server; +extern uint32 g_redirect_server_len; extern char g_redirect_domain[16]; extern char g_redirect_password[64]; 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) { /* 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 */ - 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) @@ -1564,14 +1569,14 @@ process_redirect_pdu(STREAM s /*, uint32 * ext_disc_reason */ ) if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_FQDN) { /* read length of fqdn 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(len); + g_redirect_server = xmalloc(g_redirect_server_len); /* 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)