Added additional connect errors.

This commit is contained in:
Armin Novak 2017-02-22 09:50:59 +01:00
parent 363109c581
commit 70baa6fe26
3 changed files with 69 additions and 50 deletions

View File

@ -241,6 +241,8 @@ FREERDP_API const char* freerdp_get_error_base_name(UINT32 code);
#define ERRCONNECT_PASSWORD_EXPIRED 0x0000000E
/* 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_SUCCESS ERRINFO_SUCCESS
#define ERRCONNECT_NONE ERRINFO_NONE
@ -251,49 +253,55 @@ FREERDP_API const char* freerdp_get_error_connect_name(UINT32 code);
#define FREERDP_ERROR_CONNECT_CLASS (FREERDP_ERROR_BASE + 2)
#define FREERDP_ERROR_PRE_CONNECT_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PRE_CONNECT_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PRE_CONNECT_FAILED)
#define FREERDP_ERROR_CONNECT_UNDEFINED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_UNDEFINED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_UNDEFINED)
#define FREERDP_ERROR_POST_CONNECT_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_POST_CONNECT_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_POST_CONNECT_FAILED)
#define FREERDP_ERROR_DNS_ERROR \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_DNS_ERROR)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_DNS_ERROR)
#define FREERDP_ERROR_DNS_NAME_NOT_FOUND \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_DNS_NAME_NOT_FOUND)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_DNS_NAME_NOT_FOUND)
#define FREERDP_ERROR_CONNECT_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_FAILED)
#define FREERDP_ERROR_MCS_CONNECT_INITIAL_ERROR \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_MCS_CONNECT_INITIAL_ERROR)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_MCS_CONNECT_INITIAL_ERROR)
#define FREERDP_ERROR_TLS_CONNECT_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_TLS_CONNECT_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_TLS_CONNECT_FAILED)
#define FREERDP_ERROR_AUTHENTICATION_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_AUTHENTICATION_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_AUTHENTICATION_FAILED)
#define FREERDP_ERROR_INSUFFICIENT_PRIVILEGES \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_INSUFFICIENT_PRIVILEGES)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_INSUFFICIENT_PRIVILEGES)
#define FREERDP_ERROR_CONNECT_CANCELLED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_CANCELLED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_CANCELLED)
#define FREERDP_ERROR_SECURITY_NEGO_CONNECT_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED)
#define FREERDP_ERROR_CONNECT_TRANSPORT_FAILED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_TRANSPORT_FAILED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_CONNECT_TRANSPORT_FAILED)
#define FREERDP_ERROR_CONNECT_PASSWORD_EXPIRED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_EXPIRED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_EXPIRED)
#define FREERDP_ERROR_CONNECT_PASSWORD_CERTAINLY_EXPIRED \
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_CERTAINLY_EXPIRED)
MAKE_FREERDP_ERROR(CONNECT, ERRCONNECT_PASSWORD_CERTAINLY_EXPIRED)
#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)
#ifdef __cplusplus
}

View File

@ -35,49 +35,55 @@
/* Protocol-independent codes */
#define ERRCONNECT_PRE_CONNECT_FAILED_STRING \
"A configuration error prevented a connection to be established."
"A configuration error prevented a connection to be established."
#define ERRCONNECT_CONNECT_UNDEFINED_STRING \
"A undefined connection error occurred."
"A undefined connection error occurred."
#define ERRCONNECT_POST_CONNECT_FAILED_STRING \
"The connection attempt was aborted due to post connect configuration errors."
"The connection attempt was aborted due to post connect configuration errors."
#define ERRCONNECT_DNS_ERROR_STRING \
"The DNS entry could not be resolved."
"The DNS entry could not be resolved."
#define ERRCONNECT_DNS_NAME_NOT_FOUND_STRING \
"The DNS host name was not found."
"The DNS host name was not found."
#define ERRCONNECT_CONNECT_FAILED_STRING \
"The connection failed."
"The connection failed."
#define ERRCONNECT_MCS_CONNECT_INITIAL_ERROR_STRING \
"The connection failed at initial MCS connect"
"The connection failed at initial MCS connect"
#define ERRCONNECT_TLS_CONNECT_FAILED_STRING \
"The connection failed at TLS connect."
"The connection failed at TLS connect."
#define ERRCONNECT_AUTHENTICATION_FAILED_STRING \
"An authentication failure aborted the connection."
"An authentication failure aborted the connection."
#define ERRCONNECT_INSUFFICIENT_PRIVILEGES_STRING \
"Insufficient privileges to establish a connection."
"Insufficient privileges to establish a connection."
#define ERRCONNECT_CONNECT_CANCELLED_STRING \
"The connection was cancelled."
"The connection was cancelled."
#define ERRCONNECT_SECURITY_NEGO_CONNECT_FAILED_STRING \
"The connection failed at negotiating security settings."
"The connection failed at negotiating security settings."
#define ERRCONNECT_CONNECT_TRANSPORT_FAILED_STRING \
"The connection transport layer failed."
"The connection transport layer failed."
#define ERRCONNECT_PASSWORD_EXPIRED_STRING \
"The password has expired and must be changed."
"The password has expired and must be changed."
#define ERRCONNECT_PASSWORD_CERTAINLY_EXPIRED_STRING \
"The password has certainly expired and must be changed."
"The password has certainly expired and must be changed."
#define ERRCONNECT_CLIENT_REVOKED_STRING \
"The client has been revoked."
#define ERRCONNECT_KDC_UNREACHABLE_STRING \
"The KDC is unreachable."
/* Special codes */
#define ERRCONNECT_SUCCESS_STRING "Success."
@ -85,31 +91,32 @@
static const ERRINFO ERRCONNECT_CODES[] =
{
ERRCONNECT_DEFINE(SUCCESS),
ERRCONNECT_DEFINE(SUCCESS),
ERRCONNECT_DEFINE(PRE_CONNECT_FAILED),
ERRCONNECT_DEFINE(CONNECT_UNDEFINED),
ERRCONNECT_DEFINE(POST_CONNECT_FAILED),
ERRCONNECT_DEFINE(DNS_ERROR),
ERRCONNECT_DEFINE(DNS_NAME_NOT_FOUND),
ERRCONNECT_DEFINE(CONNECT_FAILED),
ERRCONNECT_DEFINE(MCS_CONNECT_INITIAL_ERROR),
ERRCONNECT_DEFINE(TLS_CONNECT_FAILED),
ERRCONNECT_DEFINE(AUTHENTICATION_FAILED),
ERRCONNECT_DEFINE(INSUFFICIENT_PRIVILEGES),
ERRCONNECT_DEFINE(CONNECT_CANCELLED),
ERRCONNECT_DEFINE(SECURITY_NEGO_CONNECT_FAILED),
ERRCONNECT_DEFINE(CONNECT_TRANSPORT_FAILED),
ERRCONNECT_DEFINE(PASSWORD_EXPIRED),
ERRCONNECT_DEFINE(PASSWORD_CERTAINLY_EXPIRED),
ERRCONNECT_DEFINE(PRE_CONNECT_FAILED),
ERRCONNECT_DEFINE(CONNECT_UNDEFINED),
ERRCONNECT_DEFINE(POST_CONNECT_FAILED),
ERRCONNECT_DEFINE(DNS_ERROR),
ERRCONNECT_DEFINE(DNS_NAME_NOT_FOUND),
ERRCONNECT_DEFINE(CONNECT_FAILED),
ERRCONNECT_DEFINE(MCS_CONNECT_INITIAL_ERROR),
ERRCONNECT_DEFINE(TLS_CONNECT_FAILED),
ERRCONNECT_DEFINE(AUTHENTICATION_FAILED),
ERRCONNECT_DEFINE(INSUFFICIENT_PRIVILEGES),
ERRCONNECT_DEFINE(CONNECT_CANCELLED),
ERRCONNECT_DEFINE(SECURITY_NEGO_CONNECT_FAILED),
ERRCONNECT_DEFINE(CONNECT_TRANSPORT_FAILED),
ERRCONNECT_DEFINE(PASSWORD_EXPIRED),
ERRCONNECT_DEFINE(PASSWORD_CERTAINLY_EXPIRED),
ERRCONNECT_DEFINE(CLIENT_REVOKED),
ERRCONNECT_DEFINE(KDC_UNREACHABLE),
ERRCONNECT_DEFINE(NONE)
ERRCONNECT_DEFINE(NONE)
};
const char* freerdp_get_error_connect_string(UINT32 code)
{
const ERRINFO* errInfo;
errInfo = &ERRCONNECT_CODES[0];
while (errInfo->code != ERRCONNECT_NONE)
@ -128,7 +135,6 @@ const char* freerdp_get_error_connect_string(UINT32 code)
const char* freerdp_get_error_connect_name(UINT32 code)
{
const ERRINFO* errInfo;
errInfo = &ERRCONNECT_CODES[0];
while (errInfo->code != ERRCONNECT_NONE)

View File

@ -112,6 +112,10 @@ out:
break;
case KRB5_KDC_UNREACH:
WLog_Print(transport->log, WLOG_WARN, "krb5_init_creds_get: KDC unreachable");
ret = FREERDP_ERROR_CONNECT_KDC_UNREACHABLE;
break;
case KRB5KRB_AP_ERR_BAD_INTEGRITY:
case KRB5KRB_AP_ERR_MODIFIED:
case KRB5KDC_ERR_PREAUTH_FAILED:
@ -126,7 +130,8 @@ out:
break;
case KRB5KDC_ERR_CLIENT_REVOKED:
ret = FREERDP_ERROR_CONNECT_PASSWORD_CERTAINLY_EXPIRED;
WLog_Print(transport->log, WLOG_WARN, "krb5_init_creds_get: Password revoked");
ret = FREERDP_ERROR_CONNECT_CLIENT_REVOKED;
break;
case KRB5KDC_ERR_POLICY: