Re: Testers for load balancing code wanted
Pavel Shtefanets <[email protected]>
| Newsgroups | gmane.network.rdesktop.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi!
I have try rdesktop from trunk in Windows Server 2008 R2 x64 terminal
servers with session broker.
If session broker redirect me, I see a truncated to three symbols
username on logon screen of next server.
After some investigation, I found some mistakes in rdesktop.c and rdp.c.
After corrections the redirected username not truncating more.
Unfortunately, server do not send the password in redirecting message.
Patch against trunk is attached to this message.
I believe this will fix rdesktop-Bugs-2845414:
https://sourceforge.net/tracker/index.php?func=detail&aid=2845414&group_id=24366&atid=381347
If it is possible, repost this to Bugs tracker for ID 2845414, this
bug closed erroneously.
Thanks for your attention and excuse me for poor English.
--
Pavel Shtefanets
rdp-redirect-username.patch:
#patch -p0 < rdp-redirect-username.patch
diff -puN rdesktop/trunk/rdesktop.c rdesktop/rdesktop.c
Index: rdesktop.c
==========================================================================
--- rdesktop.c (revision 1600)
+++ rdesktop.c (working)
@@ -975,11 +975,15 @@ main(int argc, char *argv[])
if (g_redirect)
{
STRNCPY(domain, g_redirect_domain, sizeof(domain));
+ DEBUG(("rdesktop.c g_redirect_domain=%s
domain=%s\n",g_redirect_domain,domain));
xfree(g_username);
g_username = (char *) xmalloc(strlen(g_redirect_username) + 1);
- STRNCPY(g_username, g_redirect_username, sizeof(g_username));
+ strcpy(g_username, g_redirect_username);
+ DEBUG(("rdesktop.c g_username=%s
strlen(g_username)=%d\n",g_username,strlen(g_username)));
STRNCPY(password, g_redirect_password, sizeof(password));
+ DEBUG(("rdesktop.c g_redirect_password=%s
password=%s\n",g_redirect_password,password));
STRNCPY(server, g_redirect_server, sizeof(server));
+ DEBUG(("rdesktop.c g_redirect_server=%s
server=%s\n",g_redirect_server,server));
flags |= RDP_LOGON_AUTO;
}
diff -puN rdesktop/trunk/rdp.c rdesktop/rdp.c
Index: rdesktop.c
==========================================================================
--- rdp.c (revision 1557)
+++ rdp.c (working)
@@ -1484,10 +1484,12 @@ process_redirect_pdu(STREAM s /*, uint32
if (g_redirect_flags & PDU_REDIRECT_HAS_IP)
{
/* read length of ip string */
+ DEBUG(("before in_uint32_le len=%d\n",len));
in_uint32_le(s, len);
/* read ip string */
rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), len);
+ DEBUG(("g_redirect_server: %s sizeof(g_redirect_server)=%d
len=%d\n",g_redirect_server,sizeof(g_redirect_server),len));
}
if (g_redirect_flags & PDU_REDIRECT_HAS_COOKIE)
@@ -1515,11 +1517,14 @@ process_redirect_pdu(STREAM s /*, uint32
if (g_redirect_flags & PDU_REDIRECT_HAS_USERNAME)
{
/* read length of username string */
+ DEBUG(("before in_uint32_le len=%d\n",len));
in_uint32_le(s, len);
+ DEBUG(("after in_uint32_le len=%d\n",len));
/* read username string */
g_redirect_username = (char *) xmalloc(len + 1);
- rdp_in_unistr(s, g_redirect_username,
strlen(g_redirect_username), len);
+ rdp_in_unistr(s, g_redirect_username, len, len);
+ DEBUG(("after rdp_in_unistr g_redirect_username=%s
len=%d\n",g_redirect_username,len));
}
if (g_redirect_flags & PDU_REDIRECT_HAS_DOMAIN)
------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:
Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
rdesktop-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdesktop-devel
rdp-redirect-username.patch
(application/octet-stream, 2.4 KB)
#patch -p0 < rdp-redirect-username.patch
diff -puN rdesktop/trunk/rdesktop.c rdesktop/rdesktop.c
Index: rdesktop.c
==========================================================================
--- rdesktop.c (revision 1600)
+++ rdesktop.c (working)
@@ -975,11 +975,15 @@ main(int argc, char *argv[])
if (g_redirect)
{
STRNCPY(domain, g_redirect_domain, sizeof(domain));
+ DEBUG(("rdesktop.c g_redirect_domain=%s domain=%s\n",g_redirect_domain,domain));
xfree(g_username);
g_username = (char *) xmalloc(strlen(g_redirect_username) + 1);
- STRNCPY(g_username, g_redirect_username, sizeof(g_username));
+ strcpy(g_username, g_redirect_username);
+ DEBUG(("rdesktop.c g_username=%s strlen(g_username)=%d\n",g_username,strlen(g_username)));
STRNCPY(password, g_redirect_password, sizeof(password));
+ DEBUG(("rdesktop.c g_redirect_password=%s password=%s\n",g_redirect_password,password));
STRNCPY(server, g_redirect_server, sizeof(server));
+ DEBUG(("rdesktop.c g_redirect_server=%s server=%s\n",g_redirect_server,server));
flags |= RDP_LOGON_AUTO;
}
diff -puN rdesktop/trunk/rdp.c rdesktop/rdp.c
Index: rdesktop.c
==========================================================================
--- rdp.c (revision 1557)
+++ rdp.c (working)
@@ -1484,10 +1484,12 @@ process_redirect_pdu(STREAM s /*, uint32
if (g_redirect_flags & PDU_REDIRECT_HAS_IP)
{
/* read length of ip string */
+ DEBUG(("before in_uint32_le len=%d\n",len));
in_uint32_le(s, len);
/* read ip string */
rdp_in_unistr(s, g_redirect_server, sizeof(g_redirect_server), len);
+ DEBUG(("g_redirect_server: %s sizeof(g_redirect_server)=%d len=%d\n",g_redirect_server,sizeof(g_redirect_server),len));
}
if (g_redirect_flags & PDU_REDIRECT_HAS_COOKIE)
@@ -1515,11 +1517,14 @@ process_redirect_pdu(STREAM s /*, uint32
if (g_redirect_flags & PDU_REDIRECT_HAS_USERNAME)
{
/* read length of username string */
+ DEBUG(("before in_uint32_le len=%d\n",len));
in_uint32_le(s, len);
+ DEBUG(("after in_uint32_le len=%d\n",len));
/* read username string */
g_redirect_username = (char *) xmalloc(len + 1);
- rdp_in_unistr(s, g_redirect_username, strlen(g_redirect_username), len);
+ rdp_in_unistr(s, g_redirect_username, len, len);
+ DEBUG(("after rdp_in_unistr g_redirect_username=%s len=%d\n",g_redirect_username,len));
}
if (g_redirect_flags & PDU_REDIRECT_HAS_DOMAIN)