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)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.