Added additional NLA error mappings.

This commit is contained in:
Armin Novak 2017-11-06 09:49:03 +01:00
parent c4aaf5bc6c
commit 7a73a0eb1b
3 changed files with 98 additions and 5 deletions

View File

@ -239,14 +239,22 @@ 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
#define ERRCONNECT_KDC_UNREACHABLE 0x00000011
#define ERRCONNECT_ACCOUNT_DISABLED 0x00000012
#define ERRCONNECT_PASSWORD_MUST_CHANGE 0x00000013
#define ERRCONNECT_LOGON_FAILURE 0x00000014
#define ERRCONNECT_WRONG_PASSWORD 0x00000015
#define ERRCONNECT_ACCESS_DENIED 0x00000016
#define ERRCONNECT_ACCOUNT_RESTRICTION 0x00000017
#define ERRCONNECT_ACCOUNT_LOCKED_OUT 0x00000018
#define ERRCONNECT_ACCOUNT_EXPIRED 0x00000019
#define ERRCONNECT_LOGON_TYPE_NOT_GRANTED 0x0000001A
#define ERRCONNECT_SUCCESS ERRINFO_SUCCESS
#define ERRCONNECT_NONE ERRINFO_NONE
@ -300,6 +308,9 @@ FREERDP_API const char* freerdp_get_error_connect_name(UINT32 code);
#define FREERDP_ERROR_CONNECT_PASSWORD_MUST_CHANGE \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_MUST_CHANGE)
#define FREERDP_ERROR_CONNECT_KDC_UNREACHABLE \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_KDC_UNREACHABLE)
#define FREERDP_ERROR_CONNECT_ACCOUNT_DISABLED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_ACCOUNT_DISABLED)
@ -309,8 +320,26 @@ FREERDP_API const char* freerdp_get_error_connect_name(UINT32 code);
#define FREERDP_ERROR_CONNECT_CLIENT_REVOKED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CLIENT_REVOKED)
#define FREERDP_ERROR_CONNECT_KDC_UNREACHABLE \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_KDC_UNREACHABLE)
#define FREERDP_ERROR_CONNECT_LOGON_FAILURE \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_LOGON_FAILURE)
#define FREERDP_ERROR_CONNECT_WRONG_PASSWORD \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_WRONG_PASSWORD)
#define FREERDP_ERROR_CONNECT_ACCESS_DENIED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_ACCESS_DENIED)
#define FREERDP_ERROR_CONNECT_ACCOUNT_RESTRICTION \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_ACCOUNT_RESTRICTION)
#define FREERDP_ERROR_CONNECT_ACCOUNT_LOCKED_OUT \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_ACCOUNT_LOCKED_OUT)
#define FREERDP_ERROR_CONNECT_ACCOUNT_EXPIRED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_ACCOUNT_EXPIRED)
#define FREERDP_ERROR_CONNECT_LOGON_TYPE_NOT_GRANTED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_LOGON_TYPE_NOT_GRANTED)
#ifdef __cplusplus
}

View File

@ -85,6 +85,33 @@
#define ERRCONNECT_KDC_UNREACHABLE_STRING \
"The KDC is unreachable."
#define ERRCONNECT_ACCOUNT_DISABLED_STRING \
"The account is disabled."
#define ERRCONNECT_PASSWORD_MUST_CHANGE_STRING \
"The password must be changed."
#define ERRCONNECT_LOGON_FAILURE_STRING \
"Logon failed."
#define ERRCONNECT_WRONG_PASSWORD_STRING \
"Wrong password supplied."
#define ERRCONNECT_ACCESS_DENIED_STRING \
"Access denied."
#define ERRCONNECT_ACCOUNT_RESTRICTION_STRING \
"Account restriction."
#define ERRCONNECT_ACCOUNT_LOCKED_OUT_STRING \
"Account locked out."
#define ERRCONNECT_ACCOUNT_EXPIRED_STRING \
"Account expired."
#define ERRCONNECT_LOGON_TYPE_NOT_GRANTED_STRING \
"Logon type not granted."
/* Special codes */
#define ERRCONNECT_SUCCESS_STRING "Success."
#define ERRCONNECT_NONE_STRING ""
@ -110,6 +137,15 @@ static const ERRINFO ERRCONNECT_CODES[] =
ERRCONNECT_DEFINE(PASSWORD_CERTAINLY_EXPIRED),
ERRCONNECT_DEFINE(CLIENT_REVOKED),
ERRCONNECT_DEFINE(KDC_UNREACHABLE),
ERRCONNECT_DEFINE(ACCOUNT_DISABLED),
ERRCONNECT_DEFINE(PASSWORD_MUST_CHANGE),
ERRCONNECT_DEFINE(LOGON_FAILURE),
ERRCONNECT_DEFINE(WRONG_PASSWORD),
ERRCONNECT_DEFINE(ACCESS_DENIED),
ERRCONNECT_DEFINE(ACCOUNT_RESTRICTION),
ERRCONNECT_DEFINE(ACCOUNT_LOCKED_OUT),
ERRCONNECT_DEFINE(ACCOUNT_EXPIRED),
ERRCONNECT_DEFINE(LOGON_TYPE_NOT_GRANTED),
ERRCONNECT_DEFINE(NONE)
};

View File

@ -1638,6 +1638,34 @@ int nla_recv_pdu(rdpNla* nla, wStream* s)
code = FREERDP_ERROR_CONNECT_ACCOUNT_DISABLED;
break;
case STATUS_LOGON_FAILURE:
code = FREERDP_ERROR_CONNECT_LOGON_FAILURE;
break;
case STATUS_WRONG_PASSWORD:
code = FREERDP_ERROR_CONNECT_WRONG_PASSWORD;
break;
case STATUS_ACCESS_DENIED:
code = FREERDP_ERROR_CONNECT_ACCESS_DENIED;
break;
case STATUS_ACCOUNT_RESTRICTION:
code = FREERDP_ERROR_CONNECT_ACCOUNT_RESTRICTION;
break;
case STATUS_ACCOUNT_LOCKED_OUT:
code = FREERDP_ERROR_CONNECT_ACCOUNT_LOCKED_OUT;
break;
case STATUS_ACCOUNT_EXPIRED:
code = FREERDP_ERROR_CONNECT_ACCOUNT_EXPIRED;
break;
case STATUS_LOGON_TYPE_NOT_GRANTED:
code = FREERDP_ERROR_CONNECT_LOGON_TYPE_NOT_GRANTED;
break;
default:
WLog_ERR(TAG, "SPNEGO failed with NTSTATUS: 0x%08"PRIX32"", nla->errorCode);
code = FREERDP_ERROR_CONNECT_FAILED;