libfreerdp-core: added complete errinfo lookup table with full meaning strings

This commit is contained in:
Marc-André Moreau 2011-08-07 23:59:28 -04:00
parent b9c9d31451
commit 9c64b994da
7 changed files with 629 additions and 99 deletions

@ -46,6 +46,8 @@ set(LIBFREERDP_CORE_SRCS
ntlmssp.h
license.c
license.h
errinfo.c
errinfo.h
registry.c
registry.h
security.c

453
libfreerdp-core/errinfo.c Normal file

@ -0,0 +1,453 @@
/**
* FreeRDP: A Remote Desktop Protocol Client
* Error Info
*
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "errinfo.h"
/* Protocol-independent codes */
char ERRINFO_RPC_INITIATED_DISCONNECT_STRING[] =
"The disconnection was initiated by an administrative tool on the server in another session.";
char ERRINFO_RPC_INITIATED_LOGOFF_STRING[] =
"The disconnection was due to a forced logoff initiated by an administrative tool on the server in another session.";
char ERRINFO_IDLE_TIMEOUT_STRING[] =
"The idle session limit timer on the server has elapsed.";
char ERRINFO_LOGON_TIMEOUT_STRING[] =
"The active session limit timer on the server has elapsed.";
char ERRINFO_DISCONNECTED_BY_OTHER_CONNECTION_STRING[] =
"Another user connected to the server, forcing the disconnection of the current connection.";
char ERRINFO_OUT_OF_MEMORY_STRING[] =
"The server ran out of available memory resources.";
char ERRINFO_SERVER_DENIED_CONNECTION_STRING[] =
"The server denied the connection.";
char ERRINFO_SERVER_INSUFFICIENT_PRIVILEGES_STRING[] =
"The user cannot connect to the server due to insufficient access privileges.";
char ERRINFO_SERVER_FRESH_CREDENTIALS_REQUIRED_STRING[] =
"The server does not accept saved user credentials and requires that the user enter their credentials for each connection.";
char ERRINFO_RPC_INITIATED_DISCONNECT_BY_USER_STRING[] =
"The disconnection was initiated by an administrative tool on the server running in the user's session.";
/* Protocol-independent licensing codes */
char ERRINFO_LICENSE_INTERNAL_STRING[] =
"An internal error has occurred in the Terminal Services licensing component.";
char ERRINFO_LICENSE_NO_LICENSE_SERVER_STRING[] =
"A Remote Desktop License Server ([MS-RDPELE] section 1.1) could not be found to provide a license.";
char ERRINFO_LICENSE_NO_LICENSE_STRING[] =
"There are no Client Access Licenses ([MS-RDPELE] section 1.1) available for the target remote computer.";
char ERRINFO_LICENSE_BAD_CLIENT_MSG_STRING[] =
"The remote computer received an invalid licensing message from the client.";
char ERRINFO_LICENSE_HWID_DOESNT_MATCH_LICENSE_STRING[] =
"The Client Access License ([MS-RDPELE] section 1.1) stored by the client has been modified.";
char ERRINFO_LICENSE_BAD_CLIENT_LICENSE_STRING[] =
"The Client Access License ([MS-RDPELE] section 1.1) stored by the client is in an invalid format.";
char ERRINFO_LICENSE_CANT_FINISH_PROTOCOL_STRING[] =
"Network problems have caused the licensing protocol ([MS-RDPELE] section 1.3.3) to be terminated.";
char ERRINFO_LICENSE_CLIENT_ENDED_PROTOCOL_STRING[] =
"The client prematurely ended the licensing protocol ([MS-RDPELE] section 1.3.3).";
char ERRINFO_LICENSE_BAD_CLIENT_ENCRYPTION_STRING[] =
"A licensing message ([MS-RDPELE] sections 2.2 and 5.1) was incorrectly encrypted.";
char ERRINFO_LICENSE_CANT_UPGRADE_LICENSE_STRING[] =
"The Client Access License ([MS-RDPELE] section 1.1) stored by the client could not be upgraded or renewed.";
char ERRINFO_LICENSE_NO_REMOTE_CONNECTIONS_STRING[] =
"The remote computer is not licensed to accept remote connections.";
/* RDP specific codes */
char ERRINFO_UNKNOWN_DATA_PDU_TYPE_STRING[] =
"Unknown pduType2 field in a received Share Data Header (section 2.2.8.1.1.1.2).";
char ERRINFO_UNKNOWN_PDU_TYPE_STRING[] =
"Unknown pduType field in a received Share Control Header (section 2.2.8.1.1.1.1).";
char ERRINFO_DATA_PDU_SEQUENCE_STRING[] =
"An out-of-sequence Slow-Path Data PDU (section 2.2.8.1.1.1.1) has been received.";
char ERRINFO_CONTROL_PDU_SEQUENCE_STRING[] =
"An out-of-sequence Slow-Path Non-Data PDU (section 2.2.8.1.1.1.1) has been received.";
char ERRINFO_INVALID_CONTROL_PDU_ACTION_STRING[] =
"A Control PDU (sections 2.2.1.15 and 2.2.1.16) has been received with an invalid action field.";
char ERRINFO_INVALID_INPUT_PDU_TYPE_STRING[] =
"(a) A Slow-Path Input Event (section 2.2.8.1.1.3.1.1) has been received with an invalid messageType field.\n"
"(b) A Fast-Path Input Event (section 2.2.8.1.2.2) has been received with an invalid eventCode field.";
char ERRINFO_INVALID_INPUT_PDU_MOUSE_STRING[] =
"(a) A Slow-Path Mouse Event (section 2.2.8.1.1.3.1.1.3) or Extended Mouse Event "
"(section 2.2.8.1.1.3.1.1.4) has been received with an invalid pointerFlags field.\n"
"(b) A Fast-Path Mouse Event (section 2.2.8.1.2.2.3) or Fast-Path Extended Mouse Event "
"(section 2.2.8.1.2.2.4) has been received with an invalid pointerFlags field.";
char ERRINFO_INVALID_REFRESH_RECT_PDU_STRING[] =
"An invalid Refresh Rect PDU (section 2.2.11.2) has been received.";
char ERRINFO_CREATE_USER_DATA_FAILED_STRING[] =
"The server failed to construct the GCC Conference Create Response user data (section 2.2.1.4).";
char ERRINFO_CONNECT_FAILED_STRING[] =
"Processing during the Channel Connection phase of the RDP Connection Sequence "
"(see section 1.3.1.1 for an overview of the RDP Connection Sequence phases) has failed.";
char ERRINFO_CONFIRM_ACTIVE_HAS_WRONG_SHAREID_STRING[] =
"A Confirm Active PDU (section 2.2.1.13.2) was received from the client with an invalid shareId field.";
char ERRINFO_CONFIRM_ACTIVE_HAS_WRONG_ORIGINATOR_STRING[] =
"A Confirm Active PDU (section 2.2.1.13.2) was received from the client with an invalid originatorId field.";
char ERRINFO_PERSISTENT_KEY_PDU_BAD_LENGTH_STRING[] =
"There is not enough data to process a Persistent Key List PDU (section 2.2.1.17).";
char ERRINFO_PERSISTENT_KEY_PDU_ILLEGAL_FIRST_STRING[] =
"A Persistent Key List PDU (section 2.2.1.17) marked as PERSIST_PDU_FIRST (0x01) was received after the reception "
"of a prior Persistent Key List PDU also marked as PERSIST_PDU_FIRST.";
char ERRINFO_PERSISTENT_KEY_PDU_TOO_MANY_TOTAL_KEYS_STRING[] =
"A Persistent Key List PDU (section 2.2.1.17) was received which specified a total number of bitmap cache entries larger than 262144.";
char ERRINFO_PERSISTENT_KEY_PDU_TOO_MANY_CACHE_KEYS_STRING[] =
"A Persistent Key List PDU (section 2.2.1.17) was received which specified an invalid total number of keys for a bitmap cache "
"(the number of entries that can be stored within each bitmap cache is specified in the Revision 1 or 2 Bitmap Cache Capability Set "
"(section 2.2.7.1.4) that is sent from client to server).";
char ERRINFO_INPUT_PDU_BAD_LENGTH_STRING[] =
"There is not enough data to process Input Event PDU Data (section 2.2.8.1.1.3.1) or a Fast-Path Input Event PDU (section 2.2.8.1.2).";
char ERRINFO_BITMAP_CACHE_ERROR_PDU_BAD_LENGTH_STRING[] =
"There is not enough data to process the shareDataHeader, NumInfoBlocks, "
"Pad1, and Pad2 fields of the Bitmap Cache Error PDU Data ([MS-RDPEGDI] section 2.2.2.3.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT_STRING[] =
"(a) The dataSignature field of the Fast-Path Input Event PDU (section 2.2.8.1.2) does not contain enough data.\n"
"(b) The fipsInformation and dataSignature fields of the Fast-Path Input Event PDU (section 2.2.8.1.2) do not contain enough data.";
char ERRINFO_VCHANNEL_DATA_TOO_SHORT_STRING[] =
"(a) There is not enough data in the Client Network Data (section 2.2.1.3.4) to read the virtual channel configuration data.\n"
"(b) There is not enough data to read a complete Channel PDU Header (section 2.2.6.1.1).";
char ERRINFO_SHARE_DATA_TOO_SHORT_STRING[] =
"(a) There is not enough data to process Control PDU Data (section 2.2.1.15.1).\n"
"(b) There is not enough data to read a complete Share Control Header (section 2.2.8.1.1.1.1).\n"
"(c) There is not enough data to read a complete Share Data Header (section 2.2.8.1.1.1.2) of a Slow-Path Data PDU (section 2.2.8.1.1.1.1).\n"
"(d) There is not enough data to process Font List PDU Data (section 2.2.1.18.1).";
char ERRINFO_BAD_SUPPRESS_OUTPUT_PDU_STRING[] =
"(a) There is not enough data to process Suppress Output PDU Data (section 2.2.11.3.1).\n"
"(b) The allowDisplayUpdates field of the Suppress Output PDU Data (section 2.2.11.3.1) is invalid.";
char ERRINFO_CONFIRM_ACTIVE_PDU_TOO_SHORT_STRING[] =
"(a) There is not enough data to read the shareControlHeader, shareId, originatorId, lengthSourceDescriptor, "
"and lengthCombinedCapabilities fields of the Confirm Active PDU Data (section 2.2.1.13.2.1).\n"
"(b) There is not enough data to read the sourceDescriptor, numberCapabilities, pad2Octets, and capabilitySets "
"fields of the Confirm Active PDU Data (section 2.2.1.13.2.1).";
char ERRINFO_CAPABILITY_SET_TOO_SMALL_STRING[] =
"There is not enough data to read the capabilitySetType and the lengthCapability fields in a received Capability Set (section 2.2.1.13.1.1.1).";
char ERRINFO_CAPABILITY_SET_TOO_LARGE_STRING[] =
"A Capability Set (section 2.2.1.13.1.1.1) has been received with a lengthCapability "
"field that contains a value greater than the total length of the data received.";
char ERRINFO_NO_CURSOR_CACHE_STRING[] =
"(a) Both the colorPointerCacheSize and pointerCacheSize fields in the Pointer Capability Set (section 2.2.7.1.5) are set to zero.\n"
"(b) The pointerCacheSize field in the Pointer Capability Set (section 2.2.7.1.5) is not present, and the colorPointerCacheSize field is set to zero.";
char ERRINFO_BAD_CAPABILITIES_STRING[] =
"The capabilities received from the client in the Confirm Active PDU (section 2.2.1.13.2) were not accepted by the server.";
char ERRINFO_VIRTUAL_CHANNEL_DECOMPRESSION_STRING[] =
"An error occurred while using the bulk compressor (section 3.1.8 and [MS-RDPEGDI] section 3.1.8) to decompress a Virtual Channel PDU (section 2.2.6.1)";
char ERRINFO_INVALID_VC_COMPRESSION_TYPE_STRING[] =
"An invalid bulk compression package was specified in the flags field of the Channel PDU Header (section 2.2.6.1.1).";
char ERRINFO_INVALID_CHANNEL_ID_STRING[] =
"An invalid MCS channel ID was specified in the mcsPdu field of the Virtual Channel PDU (section 2.2.6.1).";
char ERRINFO_VCHANNELS_TOO_MANY_STRING[] =
"The client requested more than the maximum allowed 31 static virtual channels in the Client Network Data (section 2.2.1.3.4).";
char ERRINFO_REMOTEAPP_NOT_ENABLED_STRING[] =
"The INFO_RAIL flag (0x00008000) MUST be set in the flags field of the Info Packet (section 2.2.1.11.1.1) "
"as the session on the remote server can only host remote applications.";
char ERRINFO_CACHE_CAP_NOT_SET_STRING[] =
"The client sent a Persistent Key List PDU (section 2.2.1.17) without including the prerequisite Revision 2 Bitmap Cache "
"Capability Set (section 2.2.7.1.4.2) in the Confirm Active PDU (section 2.2.1.13.2).";
char ERRINFO_BITMAP_CACHE_ERROR_PDU_BAD_LENGTH2_STRING[] =
"The NumInfoBlocks field in the Bitmap Cache Error PDU Data is inconsistent with the amount of data in the "
"Info field ([MS-RDPEGDI] section 2.2.2.3.1.1).";
char ERRINFO_OFFSCREEN_CACHE_ERROR_PDU_BAD_LENGTH_STRING[] =
"There is not enough data to process an Offscreen Bitmap Cache Error PDU ([MS-RDPEGDI] section 2.2.2.3.2).";
char ERRINFO_DRAWNINEGRID_CACHE_ERROR_PDU_BAD_LENGTH_STRING[] =
"There is not enough data to process a DrawNineGrid Cache Error PDU ([MS-RDPEGDI] section 2.2.2.3.3).";
char ERRINFO_GDIPLUS_PDU_BAD_LENGTH_STRING[] =
"There is not enough data to process a GDI+ Error PDU ([MS-RDPEGDI] section 2.2.2.3.4).";
char ERRINFO_SECURITY_DATA_TOO_SHORT2_STRING[] =
"There is not enough data to read a Basic Security Header (section 2.2.8.1.1.2.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT3_STRING[] =
"There is not enough data to read a Non-FIPS Security Header (section 2.2.8.1.1.2.2) or FIPS Security Header (section 2.2.8.1.1.2.3).";
char ERRINFO_SECURITY_DATA_TOO_SHORT4_STRING[] =
"There is not enough data to read the basicSecurityHeader and length fields of the Security Exchange PDU Data (section 2.2.1.10.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT5_STRING[] =
"There is not enough data to read the CodePage, flags, cbDomain, cbUserName, cbPassword, cbAlternateShell, "
"cbWorkingDir, Domain, UserName, Password, AlternateShell, and WorkingDir fields in the Info Packet (section 2.2.1.11.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT6_STRING[] =
"There is not enough data to read the CodePage, flags, cbDomain, cbUserName, cbPassword, cbAlternateShell, "
"and cbWorkingDir fields in the Info Packet (section 2.2.1.11.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT7_STRING[] =
"There is not enough data to read the clientAddressFamily and cbClientAddress fields in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT8_STRING[] =
"There is not enough data to read the clientAddress field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT9_STRING[] =
"There is not enough data to read the cbClientDir field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT10_STRING[] =
"There is not enough data to read the clientDir field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT11_STRING[] =
"There is not enough data to read the clientTimeZone field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT12_STRING[] =
"There is not enough data to read the clientSessionId field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT13_STRING[] =
"There is not enough data to read the performanceFlags field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT14_STRING[] =
"There is not enough data to read the cbAutoReconnectLen field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT15_STRING[] =
"There is not enough data to read the autoReconnectCookie field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT16_STRING[] =
"The cbAutoReconnectLen field in the Extended Info Packet (section 2.2.1.11.1.1.1) contains a value "
"which is larger than the maximum allowed length of 128 bytes.";
char ERRINFO_SECURITY_DATA_TOO_SHORT17_STRING[] =
"There is not enough data to read the clientAddressFamily and cbClientAddress fields in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT18_STRING[] =
"There is not enough data to read the clientAddress field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT19_STRING[] =
"There is not enough data to read the cbClientDir field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT20_STRING[] =
"There is not enough data to read the clientDir field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT21_STRING[] =
"There is not enough data to read the clientTimeZone field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT22_STRING[] =
"There is not enough data to read the clientSessionId field in the Extended Info Packet (section 2.2.1.11.1.1.1).";
char ERRINFO_SECURITY_DATA_TOO_SHORT23_STRING[] =
"There is not enough data to read the Client Info PDU Data (section 2.2.1.11.1).";
char ERRINFO_BAD_MONITOR_DATA_STRING[] =
"The monitorCount field in the Client Monitor Data (section 2.2.1.3.6) is invalid.";
char ERRINFO_VC_DECOMPRESSED_REASSEMBLE_FAILED_STRING[] =
"The server-side decompression buffer is invalid, or the size of the decompressed VC data exceeds "
"the chunking size specified in the Virtual Channel Capability Set (section 2.2.7.1.10).";
char ERRINFO_VC_DATA_TOO_LONG_STRING[] =
"The size of a received Virtual Channel PDU (section 2.2.6.1) exceeds the chunking size specified "
"in the Virtual Channel Capability Set (section 2.2.7.1.10).";
char ERRINFO_GRAPHICS_MODE_NOT_SUPPORTED_STRING[] =
"The graphics mode requested by the client is not supported by the server.";
char ERRINFO_GRAPHICS_SUBSYSTEM_RESET_FAILED_STRING[] =
"The server-side graphics subsystem failed to reset.";
char ERRINFO_UPDATE_SESSION_KEY_FAILED_STRING[] =
"An attempt to update the session keys while using Standard RDP Security mechanisms (section 5.3.7) failed.";
char ERRINFO_DECRYPT_FAILED_STRING[] =
"(a) Decryption using Standard RDP Security mechanisms (section 5.3.6) failed.\n"
"(b) Session key creation using Standard RDP Security mechanisms (section 5.3.5) failed.";
char ERRINFO_ENCRYPT_FAILED_STRING[] =
"Encryption using Standard RDP Security mechanisms (section 5.3.6) failed.";
char ERRINFO_ENCRYPTION_PACKAGE_MISMATCH_STRING[] =
"Failed to find a usable Encryption Method (section 5.3.2) in the encryptionMethods field of the Client Security Data (section 2.2.1.4.3).";
char ERRINFO_DECRYPT_FAILED2_STRING[] =
"Unencrypted data was encountered in a protocol stream which is meant to be encrypted with Standard RDP Security mechanisms (section 5.3.6).";
/* Special codes */
char ERRINFO_SUCCESS_STRING[] = "Success.";
char ERRINFO_NONE_STRING[] = "";
ERRINFO ERRINFO_CODES[] =
{
ERRINFO_DEFINE(SUCCESS),
/* Protocol-independent codes */
ERRINFO_DEFINE(RPC_INITIATED_DISCONNECT),
ERRINFO_DEFINE(RPC_INITIATED_LOGOFF),
ERRINFO_DEFINE(IDLE_TIMEOUT),
ERRINFO_DEFINE(LOGON_TIMEOUT),
ERRINFO_DEFINE(DISCONNECTED_BY_OTHER_CONNECTION),
ERRINFO_DEFINE(OUT_OF_MEMORY),
ERRINFO_DEFINE(SERVER_DENIED_CONNECTION),
ERRINFO_DEFINE(SERVER_INSUFFICIENT_PRIVILEGES),
ERRINFO_DEFINE(SERVER_FRESH_CREDENTIALS_REQUIRED),
ERRINFO_DEFINE(RPC_INITIATED_DISCONNECT_BY_USER),
/* Protocol-independent licensing codes */
ERRINFO_DEFINE(LICENSE_INTERNAL),
ERRINFO_DEFINE(LICENSE_NO_LICENSE_SERVER),
ERRINFO_DEFINE(LICENSE_NO_LICENSE),
ERRINFO_DEFINE(LICENSE_BAD_CLIENT_MSG),
ERRINFO_DEFINE(LICENSE_HWID_DOESNT_MATCH_LICENSE),
ERRINFO_DEFINE(LICENSE_BAD_CLIENT_LICENSE),
ERRINFO_DEFINE(LICENSE_CANT_FINISH_PROTOCOL),
ERRINFO_DEFINE(LICENSE_CLIENT_ENDED_PROTOCOL),
ERRINFO_DEFINE(LICENSE_BAD_CLIENT_ENCRYPTION),
ERRINFO_DEFINE(LICENSE_CANT_UPGRADE_LICENSE),
ERRINFO_DEFINE(LICENSE_NO_REMOTE_CONNECTIONS),
/* RDP specific codes */
ERRINFO_DEFINE(UNKNOWN_DATA_PDU_TYPE),
ERRINFO_DEFINE(UNKNOWN_PDU_TYPE),
ERRINFO_DEFINE(DATA_PDU_SEQUENCE),
ERRINFO_DEFINE(CONTROL_PDU_SEQUENCE),
ERRINFO_DEFINE(INVALID_CONTROL_PDU_ACTION),
ERRINFO_DEFINE(INVALID_INPUT_PDU_TYPE),
ERRINFO_DEFINE(INVALID_INPUT_PDU_MOUSE),
ERRINFO_DEFINE(INVALID_REFRESH_RECT_PDU),
ERRINFO_DEFINE(CREATE_USER_DATA_FAILED),
ERRINFO_DEFINE(CONNECT_FAILED),
ERRINFO_DEFINE(CONFIRM_ACTIVE_HAS_WRONG_SHAREID),
ERRINFO_DEFINE(CONFIRM_ACTIVE_HAS_WRONG_ORIGINATOR),
ERRINFO_DEFINE(PERSISTENT_KEY_PDU_BAD_LENGTH),
ERRINFO_DEFINE(PERSISTENT_KEY_PDU_ILLEGAL_FIRST),
ERRINFO_DEFINE(PERSISTENT_KEY_PDU_TOO_MANY_TOTAL_KEYS),
ERRINFO_DEFINE(PERSISTENT_KEY_PDU_TOO_MANY_CACHE_KEYS),
ERRINFO_DEFINE(INPUT_PDU_BAD_LENGTH),
ERRINFO_DEFINE(BITMAP_CACHE_ERROR_PDU_BAD_LENGTH),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT),
ERRINFO_DEFINE(VCHANNEL_DATA_TOO_SHORT ),
ERRINFO_DEFINE(SHARE_DATA_TOO_SHORT),
ERRINFO_DEFINE(BAD_SUPPRESS_OUTPUT_PDU),
ERRINFO_DEFINE(CONFIRM_ACTIVE_PDU_TOO_SHORT),
ERRINFO_DEFINE(CAPABILITY_SET_TOO_SMALL),
ERRINFO_DEFINE(CAPABILITY_SET_TOO_LARGE),
ERRINFO_DEFINE(NO_CURSOR_CACHE),
ERRINFO_DEFINE(BAD_CAPABILITIES),
ERRINFO_DEFINE(VIRTUAL_CHANNEL_DECOMPRESSION),
ERRINFO_DEFINE(INVALID_VC_COMPRESSION_TYPE),
ERRINFO_DEFINE(INVALID_CHANNEL_ID),
ERRINFO_DEFINE(VCHANNELS_TOO_MANY),
ERRINFO_DEFINE(REMOTEAPP_NOT_ENABLED),
ERRINFO_DEFINE(CACHE_CAP_NOT_SET),
ERRINFO_DEFINE(BITMAP_CACHE_ERROR_PDU_BAD_LENGTH2),
ERRINFO_DEFINE(OFFSCREEN_CACHE_ERROR_PDU_BAD_LENGTH),
ERRINFO_DEFINE(DRAWNINEGRID_CACHE_ERROR_PDU_BAD_LENGTH),
ERRINFO_DEFINE(GDIPLUS_PDU_BAD_LENGTH),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT2),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT3),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT4),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT5),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT6),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT7),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT8),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT9),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT10),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT11),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT12),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT13),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT14),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT15),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT16),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT17),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT18),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT19),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT20),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT21),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT22),
ERRINFO_DEFINE(SECURITY_DATA_TOO_SHORT23),
ERRINFO_DEFINE(BAD_MONITOR_DATA),
ERRINFO_DEFINE(VC_DECOMPRESSED_REASSEMBLE_FAILED),
ERRINFO_DEFINE(VC_DATA_TOO_LONG),
ERRINFO_DEFINE(GRAPHICS_MODE_NOT_SUPPORTED),
ERRINFO_DEFINE(GRAPHICS_SUBSYSTEM_RESET_FAILED),
ERRINFO_DEFINE(UPDATE_SESSION_KEY_FAILED),
ERRINFO_DEFINE(DECRYPT_FAILED),
ERRINFO_DEFINE(ENCRYPT_FAILED),
ERRINFO_DEFINE(ENCRYPTION_PACKAGE_MISMATCH),
ERRINFO_DEFINE(DECRYPT_FAILED2),
ERRINFO_DEFINE(NONE)
};
void rdp_print_errinfo(uint32 code)
{
ERRINFO* errInfo;
errInfo = &ERRINFO_CODES[0];
while (errInfo->code != ERRINFO_NONE)
{
if (code == errInfo->code)
{
printf("%s (0x%08X):\n%s\n", errInfo->name, code, errInfo->info);
return;
}
errInfo++;
}
printf("ERRINFO_UNKNOWN 0x%08X: Unknown error.\n", code);
}

136
libfreerdp-core/errinfo.h Normal file

@ -0,0 +1,136 @@
/**
* FreeRDP: A Remote Desktop Protocol Client
* Error Info
*
* Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __ERRINFO_H
#define __ERRINFO_H
#include <freerdp/freerdp.h>
/* Protocol-independent codes */
#define ERRINFO_RPC_INITIATED_DISCONNECT 0x00000001
#define ERRINFO_RPC_INITIATED_LOGOFF 0x00000002
#define ERRINFO_IDLE_TIMEOUT 0x00000003
#define ERRINFO_LOGON_TIMEOUT 0x00000004
#define ERRINFO_DISCONNECTED_BY_OTHER_CONNECTION 0x00000005
#define ERRINFO_OUT_OF_MEMORY 0x00000006
#define ERRINFO_SERVER_DENIED_CONNECTION 0x00000007
#define ERRINFO_SERVER_INSUFFICIENT_PRIVILEGES 0x00000008
#define ERRINFO_SERVER_FRESH_CREDENTIALS_REQUIRED 0x0000000A
#define ERRINFO_RPC_INITIATED_DISCONNECT_BY_USER 0x0000000B
/* Protocol-independent licensing codes */
#define ERRINFO_LICENSE_INTERNAL 0x00000100
#define ERRINFO_LICENSE_NO_LICENSE_SERVER 0x00000101
#define ERRINFO_LICENSE_NO_LICENSE 0x00000102
#define ERRINFO_LICENSE_BAD_CLIENT_MSG 0x00000103
#define ERRINFO_LICENSE_HWID_DOESNT_MATCH_LICENSE 0x00000104
#define ERRINFO_LICENSE_BAD_CLIENT_LICENSE 0x00000105
#define ERRINFO_LICENSE_CANT_FINISH_PROTOCOL 0x00000106
#define ERRINFO_LICENSE_CLIENT_ENDED_PROTOCOL 0x00000107
#define ERRINFO_LICENSE_BAD_CLIENT_ENCRYPTION 0x00000108
#define ERRINFO_LICENSE_CANT_UPGRADE_LICENSE 0x00000109
#define ERRINFO_LICENSE_NO_REMOTE_CONNECTIONS 0x0000010A
/* RDP specific codes */
#define ERRINFO_UNKNOWN_DATA_PDU_TYPE 0x000010C9
#define ERRINFO_UNKNOWN_PDU_TYPE 0x000010CA
#define ERRINFO_DATA_PDU_SEQUENCE 0x000010CB
#define ERRINFO_CONTROL_PDU_SEQUENCE 0x000010CD
#define ERRINFO_INVALID_CONTROL_PDU_ACTION 0x000010CE
#define ERRINFO_INVALID_INPUT_PDU_TYPE 0x000010CF
#define ERRINFO_INVALID_INPUT_PDU_MOUSE 0x000010D0
#define ERRINFO_INVALID_REFRESH_RECT_PDU 0x000010D1
#define ERRINFO_CREATE_USER_DATA_FAILED 0x000010D2
#define ERRINFO_CONNECT_FAILED 0x000010D3
#define ERRINFO_CONFIRM_ACTIVE_HAS_WRONG_SHAREID 0x000010D4
#define ERRINFO_CONFIRM_ACTIVE_HAS_WRONG_ORIGINATOR 0x000010D5
#define ERRINFO_PERSISTENT_KEY_PDU_BAD_LENGTH 0x000010DA
#define ERRINFO_PERSISTENT_KEY_PDU_ILLEGAL_FIRST 0x000010DB
#define ERRINFO_PERSISTENT_KEY_PDU_TOO_MANY_TOTAL_KEYS 0x000010DC
#define ERRINFO_PERSISTENT_KEY_PDU_TOO_MANY_CACHE_KEYS 0x000010DD
#define ERRINFO_INPUT_PDU_BAD_LENGTH 0x000010DE
#define ERRINFO_BITMAP_CACHE_ERROR_PDU_BAD_LENGTH 0x000010DF
#define ERRINFO_SECURITY_DATA_TOO_SHORT 0x000010E0
#define ERRINFO_VCHANNEL_DATA_TOO_SHORT 0x000010E1
#define ERRINFO_SHARE_DATA_TOO_SHORT 0x000010E2
#define ERRINFO_BAD_SUPPRESS_OUTPUT_PDU 0x000010E3
#define ERRINFO_CONFIRM_ACTIVE_PDU_TOO_SHORT 0x000010E5
#define ERRINFO_CAPABILITY_SET_TOO_SMALL 0x000010E7
#define ERRINFO_CAPABILITY_SET_TOO_LARGE 0x000010E8
#define ERRINFO_NO_CURSOR_CACHE 0x000010E9
#define ERRINFO_BAD_CAPABILITIES 0x000010EA
#define ERRINFO_VIRTUAL_CHANNEL_DECOMPRESSION 0x000010EC
#define ERRINFO_INVALID_VC_COMPRESSION_TYPE 0x000010ED
#define ERRINFO_INVALID_CHANNEL_ID 0x000010EF
#define ERRINFO_VCHANNELS_TOO_MANY 0x000010F0
#define ERRINFO_REMOTEAPP_NOT_ENABLED 0x000010F3
#define ERRINFO_CACHE_CAP_NOT_SET 0x000010F4
#define ERRINFO_BITMAP_CACHE_ERROR_PDU_BAD_LENGTH2 0x000010F5
#define ERRINFO_OFFSCREEN_CACHE_ERROR_PDU_BAD_LENGTH 0x000010F6
#define ERRINFO_DRAWNINEGRID_CACHE_ERROR_PDU_BAD_LENGTH 0x000010F7
#define ERRINFO_GDIPLUS_PDU_BAD_LENGTH 0x000010F8
#define ERRINFO_SECURITY_DATA_TOO_SHORT2 0x00001111
#define ERRINFO_SECURITY_DATA_TOO_SHORT3 0x00001112
#define ERRINFO_SECURITY_DATA_TOO_SHORT4 0x00001113
#define ERRINFO_SECURITY_DATA_TOO_SHORT5 0x00001114
#define ERRINFO_SECURITY_DATA_TOO_SHORT6 0x00001115
#define ERRINFO_SECURITY_DATA_TOO_SHORT7 0x00001116
#define ERRINFO_SECURITY_DATA_TOO_SHORT8 0x00001117
#define ERRINFO_SECURITY_DATA_TOO_SHORT9 0x00001118
#define ERRINFO_SECURITY_DATA_TOO_SHORT10 0x00001119
#define ERRINFO_SECURITY_DATA_TOO_SHORT11 0x0000111A
#define ERRINFO_SECURITY_DATA_TOO_SHORT12 0x0000111B
#define ERRINFO_SECURITY_DATA_TOO_SHORT13 0x0000111C
#define ERRINFO_SECURITY_DATA_TOO_SHORT14 0x0000111D
#define ERRINFO_SECURITY_DATA_TOO_SHORT15 0x0000111E
#define ERRINFO_SECURITY_DATA_TOO_SHORT16 0x0000111F
#define ERRINFO_SECURITY_DATA_TOO_SHORT17 0x00001120
#define ERRINFO_SECURITY_DATA_TOO_SHORT18 0x00001121
#define ERRINFO_SECURITY_DATA_TOO_SHORT19 0x00001122
#define ERRINFO_SECURITY_DATA_TOO_SHORT20 0x00001123
#define ERRINFO_SECURITY_DATA_TOO_SHORT21 0x00001124
#define ERRINFO_SECURITY_DATA_TOO_SHORT22 0x00001125
#define ERRINFO_SECURITY_DATA_TOO_SHORT23 0x00001126
#define ERRINFO_BAD_MONITOR_DATA 0x00001129
#define ERRINFO_VC_DECOMPRESSED_REASSEMBLE_FAILED 0x0000112A
#define ERRINFO_VC_DATA_TOO_LONG 0x0000112B
#define ERRINFO_GRAPHICS_MODE_NOT_SUPPORTED 0x0000112D
#define ERRINFO_GRAPHICS_SUBSYSTEM_RESET_FAILED 0x0000112E
#define ERRINFO_UPDATE_SESSION_KEY_FAILED 0x00001191
#define ERRINFO_DECRYPT_FAILED 0x00001192
#define ERRINFO_ENCRYPT_FAILED 0x00001193
#define ERRINFO_ENCRYPTION_PACKAGE_MISMATCH 0x00001194
#define ERRINFO_DECRYPT_FAILED2 0x00001195
#define ERRINFO_SUCCESS 0x00000000
#define ERRINFO_NONE 0xFFFFFFFF
struct _ERRINFO
{
uint32 code;
char* name;
char* info;
};
typedef struct _ERRINFO ERRINFO;
#define ERRINFO_DEFINE(_code) { ERRINFO_##_code , "ERRINFO_" #_code , ERRINFO_##_code##_STRING }
void rdp_print_errinfo(uint32 code);
#endif

@ -19,6 +19,24 @@
#include "license.h"
uint8 LICENSE_MESSAGE_STRINGS[][32] =
{
"",
"License Request",
"Platform Challenge",
"New License",
"Upgrade License",
"", "", "", "", "", "",
"", "", "", "", "", "",
"",
"License Info",
"New License Request",
"",
"Platform Challenge Response",
"", "", "", "", "", "", "", "", "",
"Error Alert"
};
uint8 error_codes[][32] =
{
"ERR_UNKNOWN",
@ -134,6 +152,8 @@ void license_send(rdpLicense* license, STREAM* s, uint8 type)
uint16 wMsgSize;
uint16 sec_flags;
DEBUG_LICENSE("Sending %s Packet", LICENSE_MESSAGE_STRINGS[type & 0x1F]);
length = stream_get_length(s);
stream_set_pos(s, 0);
@ -164,6 +184,8 @@ void license_recv(rdpLicense* license, STREAM* s)
license_read_preamble(s, &bMsgType, &flags, &wMsgSize); /* preamble (4 bytes) */
DEBUG_LICENSE("Receiving %s Packet", LICENSE_MESSAGE_STRINGS[bMsgType & 0x1F]);
switch (bMsgType)
{
case LICENSE_REQUEST:
@ -503,8 +525,6 @@ void license_free_scope_list(SCOPE_LIST* scopeList)
void license_read_license_request_packet(rdpLicense* license, STREAM* s)
{
DEBUG_LICENSE("Receiving License Request Packet");
/* ServerRandom (32 bytes) */
stream_read(s, license->server_random, 32);
@ -668,7 +688,6 @@ void license_send_new_license_request_packet(rdpLicense* license)
STREAM* s;
s = license_send_stream_init(license);
DEBUG_LICENSE("Sending New License Request Packet");
license->client_user_name->data = (uint8*)license->rdp->settings->username;
license->client_user_name->length = strlen((char*)license->rdp->settings->username);

@ -196,6 +196,8 @@ void license_send_platform_challenge_response_packet(rdpLicense* license);
rdpLicense* license_new(rdpRdp* rdp);
void license_free(rdpLicense* license);
#define WITH_DEBUG_LICENSE
#ifdef WITH_DEBUG_LICENSE
#define DEBUG_LICENSE(fmt, ...) DEBUG_CLASS(LICENSE, fmt, ## __VA_ARGS__)
#else

@ -245,8 +245,8 @@ void rdp_read_set_error_info_data_pdu(STREAM* s)
stream_read_uint32(s, errorInfo); /* errorInfo (4 bytes) */
if (errorInfo != 0)
printf("Error Info: 0x%08X\n", errorInfo);
if (errorInfo != ERRINFO_SUCCESS)
rdp_print_errinfo(errorInfo);
}
void rdp_read_data_pdu(rdpRdp* rdp, STREAM* s)
@ -359,6 +359,7 @@ void rdp_process_pdu(rdpRdp* rdp, STREAM* s)
uint16 initiator;
uint16 channelId;
uint16 sec_flags;
boolean processed;
enum DomainMCSPDU MCSPDU;
/* TODO: Check Fast Path header */
@ -373,6 +374,7 @@ void rdp_process_pdu(rdpRdp* rdp, STREAM* s)
if (rdp->licensed != True)
{
processed = False;
rdp_read_security_header(s, &sec_flags);
if (sec_flags & SEC_PKT_MASK)
@ -380,20 +382,27 @@ void rdp_process_pdu(rdpRdp* rdp, STREAM* s)
switch (sec_flags & SEC_PKT_MASK)
{
case SEC_LICENSE_PKT:
processed = True;
license_recv(rdp->license, s);
break;
case SEC_REDIRECTION_PKT:
processed = True;
rdp_read_redirection_packet(rdp, s);
break;
default:
//printf("incorrect security flags: 0x%04X\n", sec_flags);
break;
}
}
if (processed)
return;
else
stream_rewind(s, 4);
}
else if (channelId != MCS_GLOBAL_CHANNEL_ID)
if (channelId != MCS_GLOBAL_CHANNEL_ID)
{
vchan_process(rdp->vchan, s, channelId);
}

@ -29,6 +29,7 @@ typedef struct rdp_rdp rdpRdp;
#include "input.h"
#include "update.h"
#include "license.h"
#include "errinfo.h"
#include "security.h"
#include "registry.h"
#include "transport.h"
@ -110,98 +111,6 @@ typedef struct rdp_rdp rdpRdp;
#define STREAM_MED 0x02
#define STREAM_HI 0x04
/* Error Info Codes */
#define ERRINFO_RPC_INITIATED_DISCONNECT 0x00000001
#define ERRINFO_RPC_INITIATED_LOGOFF 0x00000002
#define ERRINFO_IDLE_TIMEOUT 0x00000003
#define ERRINFO_LOGON_TIMEOUT 0x00000004
#define ERRINFO_DISCONNECTED_BY_OTHER_CONNECTION 0x00000005
#define ERRINFO_OUT_OF_MEMORY 0x00000006
#define ERRINFO_SERVER_DENIED_CONNECTION 0x00000007
#define ERRINFO_SERVER_INSUFFICIENT_PRIVILEGES 0x00000008
#define ERRINFO_SERVER_FRESH_CREDENTIALS_REQUIRED 0x0000000A
#define ERRINFO_RPC_INITIATED_DISCONNECT_BY_USER 0x0000000B
#define ERRINFO_LICENSE_INTERNAL 0x00000100
#define ERRINFO_LICENSE_NO_LICENSE_SERVER 0x00000101
#define ERRINFO_LICENSE_NO_LICENSE 0x00000102
#define ERRINFO_LICENSE_BAD_CLIENT_MSG 0x00000103
#define ERRINFO_LICENSE_HWID_DOESNT_MATCH_LICENSE 0x00000104
#define ERRINFO_LICENSE_BAD_CLIENT_LICENSE 0x00000105
#define ERRINFO_LICENSE_CANT_FINISH_PROTOCOL 0x00000106
#define ERRINFO_LICENSE_CLIENT_ENDED_PROTOCOL 0x00000107
#define ERRINFO_LICENSE_BAD_CLIENT_ENCRYPTION 0x00000108
#define ERRINFO_LICENSE_CANT_UPGRADE_LICENSE 0x00000109
#define ERRINFO_LICENSE_NO_REMOTE_CONNECTIONS 0x0000010A
#define ERRINFO_UNKNOWN_DATA_PDU_TYPE 0x000010C9
#define ERRINFO_UNKNOWN_PDU_TYPE 0x000010CA
#define ERRINFO_DATA_PDU_SEQUENCE 0x000010CB
#define ERRINFO_CONTROL_PDU_SEQUENCE 0x000010CD
#define ERRINFO_INVALID_CONTROL_PDU_ACTION 0x000010CE
#define ERRINFO_INVALID_INPUT_PDU_TYPE 0x000010CF
#define ERRINFO_INVALID_INPUT_PDU_MOUSE 0x000010D0
#define ERRINFO_INVALID_REFRESH_RECT_PDU 0x000010D1
#define ERRINFO_CREATE_USER_DATA_FAILED 0x000010D2
#define ERRINFO_CONNECT_FAILED 0x000010D3
#define ERRINFO_CONFIRM_ACTIVE_HAS_WRONG_SHAREID 0x000010D4
#define ERRINFO_CONFIRM_ACTIVE_HAS_WRONG_ORIGINATOR 0x000010D5
#define ERRINFO_PERSISTENT_KEY_PDU_BAD_LENGTH 0x000010DA
#define ERRINFO_PERSISTENT_KEY_PDU_ILLEGAL_FIRST 0x000010DB
#define ERRINFO_PERSISTENT_KEY_PDU_TOO_MANY_TOTAL_KEYS 0x000010DC
#define ERRINFO_PERSISTENT_KEY_PDU_TOO_MANY_CACHE_KEYS 0x000010DD
#define ERRINFO_INPUT_PDU_BAD_LENGTH 0x000010DE
#define ERRINFO_BITMAP_CACHE_ERROR_PDU_BAD_LENGTH 0x000010DF
#define ERRINFO_SECURITY_DATA_TOO_SHORT 0x000010E0
#define ERRINFO_VCHANNEL_DATA_TOO_SHORT 0x000010E1
#define ERRINFO_SHARE_DATA_TOO_SHORT 0x000010E2
#define ERRINFO_BAD_SUPPRESS_OUTPUT_PDU 0x000010E3
#define ERRINFO_CONFIRM_ACTIVE_PDU_TOO_SHORT 0x000010E5
#define ERRINFO_CAPABILITY_SET_TOO_SMALL 0x000010E7
#define ERRINFO_CAPABILITY_SET_TOO_LARGE 0x000010E8
#define ERRINFO_NO_CURSOR_CACHE 0x000010E9
#define ERRINFO_BAD_CAPABILITIES 0x000010EA
#define ERRINFO_VIRTUAL_CHANNEL_DECOMPRESSION 0x000010EC
#define ERRINFO_INVALID_VC_COMPRESSION_TYPE 0x000010ED
#define ERRINFO_INVALID_CHANNEL_ID 0x000010EF
#define ERRINFO_VCHANNELS_TOO_MANY 0x000010F0
#define ERRINFO_REMOTEAPP_NOT_ENABLED 0x000010F3
#define ERRINFO_CACHE_CAP_NOT_SET 0x000010F4
#define ERRINFO_BITMAP_CACHE_ERROR_PDU_BAD_LENGTH2 0x000010F5
#define ERRINFO_OFFSCREEN_CACHE_ERROR_PDU_BAD_LENGTH 0x000010F6
#define ERRINFO_DRAWNINEGRID_CACHE_ERROR_PDU_BAD_LENGTH 0x000010F7
#define ERRINFO_GDI_PLUS_PDU_BAD_LENGTH 0x000010F8
#define ERRINFO_SECURITY_DATA_TOO_SHORT2 0x00001111
#define ERRINFO_SECURITY_DATA_TOO_SHORT3 0x00001112
#define ERRINFO_SECURITY_DATA_TOO_SHORT4 0x00001113
#define ERRINFO_SECURITY_DATA_TOO_SHORT5 0x00001114
#define ERRINFO_SECURITY_DATA_TOO_SHORT6 0x00001115
#define ERRINFO_SECURITY_DATA_TOO_SHORT7 0x00001116
#define ERRINFO_SECURITY_DATA_TOO_SHORT8 0x00001117
#define ERRINFO_SECURITY_DATA_TOO_SHORT9 0x00001118
#define ERRINFO_SECURITY_DATA_TOO_SHORT10 0x00001119
#define ERRINFO_SECURITY_DATA_TOO_SHORT11 0x0000111A
#define ERRINFO_SECURITY_DATA_TOO_SHORT12 0x0000111B
#define ERRINFO_SECURITY_DATA_TOO_SHORT13 0x0000111C
#define ERRINFO_SECURITY_DATA_TOO_SHORT14 0x0000111D
#define ERRINFO_SECURITY_DATA_TOO_SHORT15 0x0000111E
#define ERRINFO_SECURITY_DATA_TOO_SHORT16 0x0000111F
#define ERRINFO_SECURITY_DATA_TOO_SHORT17 0x00001120
#define ERRINFO_SECURITY_DATA_TOO_SHORT18 0x00001121
#define ERRINFO_SECURITY_DATA_TOO_SHORT19 0x00001122
#define ERRINFO_SECURITY_DATA_TOO_SHORT20 0x00001123
#define ERRINFO_SECURITY_DATA_TOO_SHORT21 0x00001124
#define ERRINFO_SECURITY_DATA_TOO_SHORT22 0x00001125
#define ERRINFO_SECURITY_DATA_TOO_SHORT23 0x00001126
#define ERRINFO_BAD_MONITOR_DATA 0x00001129
#define ERRINFO_VC_DECOMPRESSED_REASSEMBLE_FAILED 0x0000112A
#define ERRINFO_VC_DATA_TOO_LONG 0x0000112B
#define ERRINFO_GRAPHICS_MODE_NOT_SUPPORTED 0x0000112D
#define ERRINFO_GRAPHICS_SUBSYSTEM_RESET_FAILED 0x0000112E
#define ERRINFO_UPDATE_SESSION_KEY_FAILED 0x00001191
#define ERRINFO_DECRYPT_FAILED 0x00001192
#define ERRINFO_ENCRYPT_FAILED 0x00001193
#define ERRINFO_ENCRYPTION_PACKAGE_MISMATCH 0x00001194
#define ERRINFO_DECRYPT_FAILED2 0x00001195
struct rdp_rdp
{
boolean licensed;