mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 08:24:16 +09:00
Added better error mapping for NEGO results.
This commit is contained in:
@@ -239,6 +239,9 @@ FREERDP_API const char* freerdp_get_error_base_name(UINT32 code);
|
||||
#define ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED 0x0000000C
|
||||
#define ERRCONNECT_CONNECT_TRANSPORT_FAILED 0x0000000D
|
||||
#define ERRCONNECT_PASSWORD_EXPIRED 0x0000000E
|
||||
#define ERRCONNECT_ACCOUNT_DISABLED 0x0000000F
|
||||
#define ERRCONNECT_PASSWORD_MUST_CHANGE 0x00000010
|
||||
|
||||
/* For non-domain workstation where we can't contact a kerberos server */
|
||||
#define ERRCONNECT_PASSWORD_CERTAINLY_EXPIRED 0x0000000F
|
||||
#define ERRCONNECT_CLIENT_REVOKED 0x00000010
|
||||
@@ -294,6 +297,12 @@ FREERDP_API const char* freerdp_get_error_connect_name(UINT32 code);
|
||||
#define FREERDP_ERROR_CONNECT_PASSWORD_EXPIRED \
|
||||
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_EXPIRED)
|
||||
|
||||
#define FREERDP_ERROR_CONNECT_PASSWORD_MUST_CHANGE \
|
||||
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_MUST_CHANGE)
|
||||
|
||||
#define FREERDP_ERROR_CONNECT_ACCOUNT_DISABLED \
|
||||
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_ACCOUNT_DISABLED)
|
||||
|
||||
#define FREERDP_ERROR_CONNECT_PASSWORD_CERTAINLY_EXPIRED \
|
||||
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_CERTAINLY_EXPIRED)
|
||||
|
||||
|
||||
@@ -1623,8 +1623,27 @@ int nla_recv_pdu(rdpNla* nla, wStream* s)
|
||||
|
||||
if (nla->errorCode)
|
||||
{
|
||||
WLog_ERR(TAG, "SPNEGO failed with NTSTATUS: 0x%08"PRIX32"", nla->errorCode);
|
||||
freerdp_set_last_error(nla->instance->context, nla->errorCode);
|
||||
UINT32 code;
|
||||
switch (nla->errorCode)
|
||||
{
|
||||
case STATUS_PASSWORD_MUST_CHANGE:
|
||||
code = FREERDP_ERROR_CONNECT_PASSWORD_MUST_CHANGE;
|
||||
break;
|
||||
|
||||
case STATUS_PASSWORD_EXPIRED:
|
||||
code = FREERDP_ERROR_CONNECT_PASSWORD_EXPIRED;
|
||||
break;
|
||||
|
||||
case STATUS_ACCOUNT_DISABLED:
|
||||
code = FREERDP_ERROR_CONNECT_ACCOUNT_DISABLED;
|
||||
break;
|
||||
|
||||
default:
|
||||
WLog_ERR(TAG, "SPNEGO failed with NTSTATUS: 0x%08"PRIX32"", nla->errorCode);
|
||||
code = FREERDP_ERROR_CONNECT_FAILED;
|
||||
break;
|
||||
}
|
||||
freerdp_set_last_error(nla->instance->context, code);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user