Removed the hardcoded limit of the username length.

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@1478 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Peter Åstrand 2008-09-26 11:40:54 +00:00
parent bf4c26c110
commit 27388283ad
3 changed files with 18 additions and 9 deletions

View File

@ -21,7 +21,7 @@
#include "rdesktop.h"
#include "ssl.h"
extern char g_username[64];
extern char *g_username;
extern char g_hostname[16];
static uint8 g_licence_key[16];

View File

@ -48,7 +48,7 @@
#include "ssl.h"
char g_title[64] = "";
char g_username[64];
char *g_username;
char g_hostname[16];
char g_keymapname[PATH_MAX] = "";
unsigned int g_keylayout = 0x409; /* Defaults to US keyboard layout */
@ -99,7 +99,7 @@ RD_BOOL g_redirect = False;
char g_redirect_server[64];
char g_redirect_domain[16];
char g_redirect_password[64];
char g_redirect_username[64];
char *g_redirect_username;
char g_redirect_cookie[128];
uint32 g_redirect_flags = 0;
@ -473,7 +473,8 @@ main(int argc, char *argv[])
break;
case 'u':
STRNCPY(g_username, optarg, sizeof(g_username));
g_username = (char *) xmalloc(strlen(optarg) + 1);
STRNCPY(g_username, optarg, strlen(optarg) + 1);
username_option = 1;
break;
@ -846,8 +847,10 @@ main(int argc, char *argv[])
error("could not determine username, use -u\n");
return 1;
}
STRNCPY(g_username, pw->pw_name, sizeof(g_username));
/* +1 for trailing \0 */
int pwlen = strlen(pw->pw_name) + 1;
g_username = (char *) xmalloc(pwlen);
STRNCPY(g_username, pw->pw_name, pwlen);
}
#ifdef HAVE_ICONV
@ -962,6 +965,8 @@ main(int argc, char *argv[])
rdesktop_reset_state();
STRNCPY(domain, g_redirect_domain, sizeof(domain));
xfree(g_username);
g_username = (char *) xmalloc(strlen(g_redirect_username) + 1);
STRNCPY(g_username, g_redirect_username, sizeof(g_username));
STRNCPY(password, g_redirect_password, sizeof(password));
STRNCPY(server, g_redirect_server, sizeof(server));
@ -1006,7 +1011,10 @@ main(int argc, char *argv[])
}
#endif
if (g_redirect_username)
xfree(g_redirect_username);
xfree(g_username);
}
#ifdef EGD_SOCKET

7
rdp.c
View File

@ -36,7 +36,7 @@
#endif
extern uint16 g_mcs_userid;
extern char g_username[64];
extern char *g_username;
extern char g_codepage[16];
extern RD_BOOL g_bitmap_compression;
extern RD_BOOL g_orders;
@ -63,7 +63,7 @@ extern RD_BOOL g_redirect;
extern char g_redirect_server[64];
extern char g_redirect_domain[16];
extern char g_redirect_password[64];
extern char g_redirect_username[64];
extern char *g_redirect_username;
extern char g_redirect_cookie[128];
extern uint32 g_redirect_flags;
/* END Session Directory support */
@ -1379,7 +1379,8 @@ process_redirect_pdu(STREAM s /*, uint32 * ext_disc_reason */ )
in_uint32_le(s, len);
/* read username string */
rdp_in_unistr(s, g_redirect_username, sizeof(g_redirect_username), len);
g_redirect_username = (char *) xmalloc(len + 1);
rdp_in_unistr(s, g_redirect_username, strlen(g_redirect_username), len);
/* read length of domain string */
in_uint32_le(s, len);