Merge pull request #3777 from gpotter2/rename-rdpflags

Rename RDP_INFO flags to spec names
This commit is contained in:
matt335672
2026-04-01 09:17:57 +01:00
committed by GitHub
2 changed files with 20 additions and 15 deletions
+12 -7
View File
@@ -152,13 +152,18 @@
#define SEC_TAG_KEYSIG 0x0008 /* BB_SIGNATURE_KEY_BLOB */ #define SEC_TAG_KEYSIG 0x0008 /* BB_SIGNATURE_KEY_BLOB */
/* Info Packet (TS_INFO_PACKET): flags (2.2.1.11.1.1) */ /* Info Packet (TS_INFO_PACKET): flags (2.2.1.11.1.1) */
/* TODO: to be renamed */ #define INFO_MOUSE 0x00000001
#define RDP_LOGON_AUTO 0x0008 #define INFO_DISABLECTRLALTDEL 0x00000002
#define RDP_LOGON_NORMAL 0x0033 #define INFO_AUTOLOGON 0x00000008
#define RDP_COMPRESSION 0x0080 #define INFO_UNICODE 0x00000010
#define RDP_LOGON_BLOB 0x0100 #define INFO_MAXIMIZESHELL 0x00000020
#define RDP_LOGON_LEAVE_AUDIO 0x2000 #define INFO_LOGONNOTIFY 0x00000040
#define RDP_LOGON_RAIL 0x8000 #define INFO_COMPRESSION 0x00000080
#define INFO_ENABLEWINDOWSKEY 0x00000100
#define INFO_REMOTECONSOLEAUDIO 0x00002000
#define INFO_RAIL 0x00008000
/* Windows always sends at least 0x33 */
#define INFO_LOGON_NORMAL (INFO_MOUSE | INFO_DISABLECTRLALTDEL | INFO_UNICODE | INFO_MAXIMIZESHELL)
/* Extended Info Packet: clientAddress (2.2.1.11.1.1.1) */ /* Extended Info Packet: clientAddress (2.2.1.11.1.1.1) */
#define EXTENDED_INFO_MAX_CLIENT_ADDR_LENGTH 80 #define EXTENDED_INFO_MAX_CLIENT_ADDR_LENGTH 80
+8 -8
View File
@@ -410,14 +410,14 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
LOG_DEVEL(LOG_LEVEL_TRACE, "Parsing [MS-RDPBCGR] TS_INFO_PACKET"); LOG_DEVEL(LOG_LEVEL_TRACE, "Parsing [MS-RDPBCGR] TS_INFO_PACKET");
/* this is the first test that the decrypt is working */ /* this is the first test that the decrypt is working */
if ((flags & RDP_LOGON_NORMAL) != RDP_LOGON_NORMAL) /* 0x33 */ if ((flags & INFO_LOGON_NORMAL) != INFO_LOGON_NORMAL) /* 0x33 */
{ {
/* must be or error */ /* must be or error */
LOG(LOG_LEVEL_ERROR, "received wrong flags, likely decrypt not working"); LOG(LOG_LEVEL_ERROR, "received wrong flags, likely decrypt not working");
return 1; return 1;
} }
if (flags & RDP_LOGON_LEAVE_AUDIO) if (flags & INFO_REMOTECONSOLEAUDIO)
{ {
self->rdp_layer->client_info.sound_code = 1; self->rdp_layer->client_info.sound_code = 1;
LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_REMOTECONSOLEAUDIO found"); LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_REMOTECONSOLEAUDIO found");
@@ -425,7 +425,7 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
"Client requested that audio on the server be played on the server."); "Client requested that audio on the server be played on the server.");
} }
if (flags & RDP_LOGON_RAIL) if (flags & INFO_RAIL)
{ {
self->rdp_layer->client_info.rail_enable = 1; self->rdp_layer->client_info.rail_enable = 1;
LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_RAIL found"); LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_RAIL found");
@@ -433,7 +433,7 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
"Client requested Remote Application Integrated Locally (RAIL)."); "Client requested Remote Application Integrated Locally (RAIL).");
} }
if (flags & RDP_LOGON_AUTO) if (flags & INFO_AUTOLOGON)
{ {
LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_AUTOLOGON found"); LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_AUTOLOGON found");
/* todo, for now not allowing autologon and mce both */ /* todo, for now not allowing autologon and mce both */
@@ -448,7 +448,7 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
} }
} }
if (flags & RDP_COMPRESSION) if (flags & INFO_COMPRESSION)
{ {
LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_COMPRESSION found, " LOG_DEVEL(LOG_LEVEL_DEBUG, "[MS-RDPBCGR] TS_INFO_PACKET flag INFO_COMPRESSION found, "
"CompressionType 0x%1.1x", (flags & 0x00001E00) >> 9); "CompressionType 0x%1.1x", (flags & 0x00001E00) >> 9);
@@ -574,7 +574,7 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
// If we require credentials, don't continue if they're not provided // If we require credentials, don't continue if they're not provided
if (self->rdp_layer->client_info.require_credentials) if (self->rdp_layer->client_info.require_credentials)
{ {
if ((flags & RDP_LOGON_AUTO) == 0) if ((flags & INFO_AUTOLOGON) == 0)
{ {
LOG(LOG_LEVEL_ERROR, "Server is configured to require that the " LOG(LOG_LEVEL_ERROR, "Server is configured to require that the "
"client enable auto logon with credentials, but the client did " "client enable auto logon with credentials, but the client did "
@@ -590,7 +590,7 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
} }
} }
if (flags & RDP_LOGON_AUTO) if (flags & INFO_AUTOLOGON)
{ {
if (ts_info_utf16_in(s, len_password, self->rdp_layer->client_info.password, sizeof(self->rdp_layer->client_info.password)) != 0) if (ts_info_utf16_in(s, len_password, self->rdp_layer->client_info.password, sizeof(self->rdp_layer->client_info.password)) != 0)
{ {
@@ -657,7 +657,7 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
/* TODO: explain why the windows key flag is used to determine if the /* TODO: explain why the windows key flag is used to determine if the
TS_EXTENDED_INFO_PACKET should be parsed */ TS_EXTENDED_INFO_PACKET should be parsed */
if (flags & RDP_LOGON_BLOB) /* INFO_ENABLEWINDOWSKEY */ if (flags & INFO_ENABLEWINDOWSKEY)
{ {
if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPBCGR] TS_EXTENDED_INFO_PACKET " if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPBCGR] TS_EXTENDED_INFO_PACKET "
"clientAddressFamily and cbClientAddress")) "clientAddressFamily and cbClientAddress"))