diff --git a/libxrdp/xrdp_sec.c b/libxrdp/xrdp_sec.c index 62f551ec..0bb91a42 100644 --- a/libxrdp/xrdp_sec.c +++ b/libxrdp/xrdp_sec.c @@ -600,17 +600,6 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s) return 1; } } - else if (self->rdp_layer->client_info.enable_token_login - && len_user > 0 - && len_password == 0 - && (sep = g_strchr(self->rdp_layer->client_info.username, '\x1f')) != NULL) - { - LOG(LOG_LEVEL_DEBUG, "Client supplied a Logon token. Overwriting password with logon token."); - g_strncpy(self->rdp_layer->client_info.password, sep + 1, - sizeof(self->rdp_layer->client_info.password) - 1); - self->rdp_layer->client_info.username[sep - self->rdp_layer->client_info.username] = '\0'; - self->rdp_layer->client_info.rdp_autologin = 1; - } else { // Skip the password @@ -620,6 +609,17 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s) } in_uint8s(s, len_password + 2); } + if (self->rdp_layer->client_info.enable_token_login + && len_user > 0 + && len_password == 0 + && (sep = g_strchr(self->rdp_layer->client_info.username, '\x1f')) != NULL) + { + LOG(LOG_LEVEL_DEBUG, "Client supplied a Logon token. Overwriting password with logon token."); + g_strncpy(self->rdp_layer->client_info.password, sep + 1, + sizeof(self->rdp_layer->client_info.password) - 1); + self->rdp_layer->client_info.username[sep - self->rdp_layer->client_info.username] = '\0'; + self->rdp_layer->client_info.rdp_autologin = 1; + } if (self->rdp_layer->client_info.domain_user_separator[0] != '\0' && self->rdp_layer->client_info.domain[0] != '\0') {