From 6de37a4f3b3e41f91ca1839a2faa2b00e0f18c12 Mon Sep 17 00:00:00 2001 From: Henrik Andersson Date: Fri, 6 Dec 2013 07:54:51 +0000 Subject: [PATCH] Dynamic allocation of redirect username. git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1772 423420c4-83ab-492f-b58f-81f9feb106b5 --- rdesktop.c | 1 + rdp.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/rdesktop.c b/rdesktop.c index 631077b..5002b13 100644 --- a/rdesktop.c +++ b/rdesktop.c @@ -118,6 +118,7 @@ char *g_redirect_server; uint32 g_redirect_server_len; char g_redirect_domain[16]; char *g_redirect_username; +uint32 g_redirect_username_len; uint8 *g_redirect_lb_info; uint32 g_redirect_lb_info_len; uint8 *g_redirect_cookie; diff --git a/rdp.c b/rdp.c index 29e0eed..1f84e08 100644 --- a/rdp.c +++ b/rdp.c @@ -69,6 +69,7 @@ extern uint32 g_redirect_server_len; extern char g_redirect_domain[16]; extern char g_redirect_password[64]; extern char *g_redirect_username; +extern uint32 g_redirect_username_len; extern uint8 *g_redirect_lb_info; extern uint32 g_redirect_lb_info_len; extern uint8 *g_redirect_cookie; @@ -1572,11 +1573,16 @@ process_redirect_pdu(STREAM s, RD_BOOL enhanced_redirect /*, uint32 * ext_disc_r if (g_redirect_flags & PDU_REDIRECT_HAS_USERNAME) { /* read length of username string */ - in_uint32_le(s, len); + in_uint32_le(s, g_redirect_username_len); + + /* reallocate a loadbalance info blob */ + if (g_redirect_username != NULL) + free(g_redirect_username); + + g_redirect_username = xmalloc(g_redirect_username_len); /* read username string */ - g_redirect_username = (char *) xmalloc(len + 1); - rdp_in_unistr(s, g_redirect_username, len + 1, len); + rdp_in_unistr(s, g_redirect_username, g_redirect_username_len, g_redirect_username_len); } if (g_redirect_flags & PDU_REDIRECT_HAS_DOMAIN)