#include "includes.h"
-#if HAVE_GSSAPI_GSSAPI_H
-#include <gssapi/gssapi.h>
-#elif HAVE_GSSAPI_GSSAPI_GENERIC_H
-#include <gssapi/gssapi_generic.h>
-#elif HAVE_GSSAPI_H
-#include <gssapi.h>
-#endif
-
/* dos -> nt status error map */
static const struct {
- uint8 dos_class;
- uint32 dos_code;
+ uint8_t dos_class;
+ uint32_t dos_code;
NTSTATUS ntstatus;
} dos_to_ntstatus_map[] = {
{ERRDOS, ERRbadfunc, NT_STATUS_NOT_IMPLEMENTED},
{ERRSRV, ERRnoroom, NT_STATUS_DISK_FULL},
{ERRSRV, ERRnoresource, NT_STATUS_REQUEST_NOT_ACCEPTED},
{ERRSRV, ERRtoomanyuids, NT_STATUS_TOO_MANY_SESSIONS},
+ {ERRSRV, ERRunknownsmb, NT_STATUS_NOT_IMPLEMENTED},
{ERRSRV, 123, NT_STATUS_OBJECT_NAME_INVALID},
{ERRSRV, 206, NT_STATUS_OBJECT_NAME_INVALID},
{ERRHRD, 1, NT_STATUS_NOT_IMPLEMENTED},
/*****************************************************************************
convert a dos eclas/ecode to a NT status32 code
*****************************************************************************/
-NTSTATUS dos_to_ntstatus(uint8 eclass, uint32 ecode)
+NTSTATUS dos_to_ntstatus(uint8_t eclass, uint32_t ecode)
{
- int i;
+ size_t i;
if (eclass == 0) return NT_STATUS_OK;
- for (i=0; NT_STATUS_V(dos_to_ntstatus_map[i].ntstatus); i++) {
+ for (i=0; i < ARRAY_SIZE(dos_to_ntstatus_map); i++) {
if (eclass == dos_to_ntstatus_map[i].dos_class &&
ecode == dos_to_ntstatus_map[i].dos_code) {
return dos_to_ntstatus_map[i].ntstatus;
return NT_STATUS_UNSUCCESSFUL;
}
-#if defined(HAVE_GSSAPI)
-/*******************************************************************************
- Map between gssapi errors and NT status. I made these up :-(. JRA.
-*******************************************************************************/
-
-static const struct {
- unsigned long gss_err;
- NTSTATUS ntstatus;
-} gss_to_ntstatus_errormap[] = {
-#if defined(GSS_S_CALL_INACCESSIBLE_READ)
- {GSS_S_CALL_INACCESSIBLE_READ, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_CALL_INACCESSIBLE_WRITE)
- {GSS_S_CALL_INACCESSIBLE_WRITE, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_CALL_BAD_STRUCTURE)
- {GSS_S_CALL_BAD_STRUCTURE, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_BAD_MECH)
- {GSS_S_BAD_MECH, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_BAD_NAME)
- {GSS_S_BAD_NAME, NT_STATUS_INVALID_ACCOUNT_NAME},
-#endif
-#if defined(GSS_S_BAD_NAMETYPE)
- {GSS_S_BAD_NAMETYPE, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_BAD_BINDINGS)
- {GSS_S_BAD_BINDINGS, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_BAD_STATUS)
- {GSS_S_BAD_STATUS, NT_STATUS_UNSUCCESSFUL},
-#endif
-#if defined(GSS_S_BAD_SIG)
- {GSS_S_BAD_SIG, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_NO_CRED)
- {GSS_S_NO_CRED, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_NO_CONTEXT)
- {GSS_S_NO_CONTEXT, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_DEFECTIVE_TOKEN)
- {GSS_S_DEFECTIVE_TOKEN, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_DEFECTIVE_CREDENTIAL)
- {GSS_S_DEFECTIVE_CREDENTIAL, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_CREDENTIALS_EXPIRED)
- {GSS_S_CREDENTIALS_EXPIRED, NT_STATUS_PASSWORD_EXPIRED},
-#endif
-#if defined(GSS_S_CONTEXT_EXPIRED)
- {GSS_S_CONTEXT_EXPIRED, NT_STATUS_PASSWORD_EXPIRED},
-#endif
-#if defined(GSS_S_BAD_QOP)
- {GSS_S_BAD_QOP, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_UNAUTHORIZED)
- {GSS_S_UNAUTHORIZED, NT_STATUS_ACCESS_DENIED},
-#endif
-#if defined(GSS_S_UNAVAILABLE)
- {GSS_S_UNAVAILABLE, NT_STATUS_UNSUCCESSFUL},
-#endif
-#if defined(GSS_S_DUPLICATE_ELEMENT)
- {GSS_S_DUPLICATE_ELEMENT, NT_STATUS_INVALID_PARAMETER},
-#endif
-#if defined(GSS_S_NAME_NOT_MN)
- {GSS_S_NAME_NOT_MN, NT_STATUS_INVALID_PARAMETER},
-#endif
- { 0, NT_STATUS_OK }
-};
-
-/*********************************************************************
- Map an NT error code from a gssapi error code.
-*********************************************************************/
-
-NTSTATUS map_nt_error_from_gss(uint32 gss_maj, uint32 minor)
-{
- int i = 0;
-
- if (gss_maj == GSS_S_COMPLETE) {
- return NT_STATUS_OK;
- }
-
- if (gss_maj == GSS_S_CONTINUE_NEEDED) {
- return NT_STATUS_MORE_PROCESSING_REQUIRED;
- }
-
- if (gss_maj == GSS_S_FAILURE) {
- return map_nt_error_from_unix((int)minor);
- }
-
- /* Look through list */
- while(gss_to_ntstatus_errormap[i].gss_err != 0) {
- if (gss_to_ntstatus_errormap[i].gss_err == gss_maj) {
- return gss_to_ntstatus_errormap[i].ntstatus;
- }
- i++;
- }
-
- /* Default return */
- return NT_STATUS_ACCESS_DENIED;
-}
-#endif