diff --git a/rdesktop.c b/rdesktop.c index d78dde7..6dbe9c2 100644 --- a/rdesktop.c +++ b/rdesktop.c @@ -114,7 +114,7 @@ uint32 g_rdp5_performanceflags = RDP5_NO_WALLPAPER | RDP5_NO_FULLWINDOWDRAG | RDP5_NO_MENUANIMATIONS; /* Session Directory redirection */ RD_BOOL g_redirect = False; -char g_redirect_server[64]; +char *g_redirect_server; char g_redirect_domain[16]; char g_redirect_password[64]; char *g_redirect_username; @@ -513,7 +513,7 @@ parse_server_and_port(char *server) int main(int argc, char *argv[]) { - char server[64]; + char server[256]; char fullhostname[64]; char domain[256]; char password[64]; diff --git a/rdp.c b/rdp.c index d8cb127..f0bbfaa 100644 --- a/rdp.c +++ b/rdp.c @@ -64,7 +64,7 @@ extern RDPCOMP g_mppc_dict; /* Session Directory support */ extern RD_BOOL g_redirect; -extern char g_redirect_server[64]; +extern char *g_redirect_server; extern char g_redirect_domain[16]; extern char g_redirect_password[64]; extern char *g_redirect_username; @@ -1563,7 +1563,15 @@ process_redirect_pdu(STREAM s /*, uint32 * ext_disc_reason */ ) if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_FQDN) { - warning("PDU_REDIRECT_HAS_TARGET_FQDN set\n"); + /* read length of fqdn string */ + in_uint32_le(s, len); + if (g_redirect_server) + free(g_redirect_server); + + g_redirect_server = xmalloc(len); + + /* read fqdn string */ + rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), len); } if (g_redirect_flags & PDU_REDIRECT_HAS_TARGET_NETBIOS)