データ構造 | |
struct | nt_err_code_struct |
関数 | |
const char * | nt_errstr (NTSTATUS nt_code) |
const char * | get_friendly_nt_error_msg (NTSTATUS nt_code) |
const char * | get_nt_error_c_code (NTSTATUS nt_code) |
NTSTATUS | nt_status_string_to_code (char *nt_status_str) |
NTSTATUS | nt_status_squash (NTSTATUS nt_status) |
Squash an NT_STATUS in line with security requirements. | |
変数 | |
static const nt_err_code_struct | nt_errs [] |
nt_err_code_struct | nt_err_desc [] |
const char* nt_errstr | ( | NTSTATUS | nt_code | ) |
参照先 nt_errs・nt_err_code_struct::nt_errstr.
参照元 _net_auth()・_net_auth_2()・_net_sam_logon_internal()・_samr_create_dom_alias()・_samr_delete_dom_group()・_samr_delete_dom_user()・account_lockout_policy_handler()・add_aliases()・add_expanded_sid()・ads_dns_lookup_ns()・ads_dns_lookup_srv()・ads_gpo_get_sysvol_gpt_version()・ads_verify_ticket()・browse_host_rpc()・call_nt_transact_notify_change()・call_trans2mkdir()・call_trans2qfilepathinfo()・can_access_file_acl()・change_trust_account_password()・check_error()・check_name()・check_ntlm_password()・check_refresh_gpo()・check_sam_security()・check_smbserver_security()・cli_full_connection()・cli_pipe_verify_ntlmssp()・cli_rpc_pipe_open_krb5()・cli_rpc_pipe_open_noauth()・cli_rpc_pipe_open_ntlmssp_internal()・cli_rpc_pipe_open_schannel_with_key()・cli_servertime()・cli_session_setup()・cli_session_setup_blob()・cli_start_connection()・close_normal_file()・cm_connect_lsa()・cm_connect_netlogon()・cm_connect_sam()・cm_prepare_connection()・cmd_netlogon_dsr_getsitename()・cmd_spoolss_printercmp()・conn_get_nt_acl()・connect_one()・connect_to_domain_password_server()・connect_to_ipc_anonymous()・connect_to_ipc_krb5()・copy_fn()・copy_internals()・copy_top_level_perms()・create_cs()・dfs_redirect()・do_cmd()・do_connect()・do_message_op()・do_ntlm_auth_with_hashes()・domain_client_validate()・elog_check_access()・enum_dom_groups()・enum_local_groups()・error_packet_set()・fetch_domain_sid()・fetch_machine_sid()・fill_grent_mem()・find_nss_domain()・get_challenge()・get_friendly_nt_error_msg()・get_nt_error_c_code()・get_rpc_shares()・get_sam_group_entries()・get_sam_user_entries()・get_schannel_session_key_common()・gpo_sync_func()・handle_aio_write_complete()・hardlink_internals()・idmap_ldap_alloc_init()・idmap_ldap_db_init()・just_change_the_password()・ldapsam_get_new_rid()・local_password_change()・local_pw_check()・lockout_policy()・lookup_groupmem()・lookup_useraliases()・lookup_usergroups()・main()・make_new_server_info_guest()・make_pdb_method_name()・make_server_info_pw()・make_server_info_sam()・manage_client_ntlmssp_init()・manage_client_ntlmssp_request()・manage_client_ntlmssp_targ()・manage_gss_spnego_request()・manage_squid_ntlmssp_request()・name_to_sid()・ndr_print_NTSTATUS()・net_ads_gpo_refresh()・net_get_remote_domain_sid()・net_make_ipc_connection_ex()・net_rpc_join_newstyle()・net_rpc_join_ok()・net_rpc_lookup_name()・net_sam_addmem()・net_sam_createbuiltingroup()・net_sam_createlocalgroup()・net_sam_delmem()・net_sam_listmem()・net_sam_mapunixgroup()・net_sam_set_comment()・net_sam_set_pwdmustchangenow()・net_sam_set_userflag()・net_sam_userset()・net_sh_process()・net_sh_run()・netdom_get_domain_sid()・netdom_join_domain()・netdom_leave_domain()・nt_status_string_to_code()・ntlm_auth_start_ntlmssp_client()・ntlm_auth_start_ntlmssp_server()・ntlmssp_check_packet()・ntlmssp_client_challenge()・nttrans_check_hit()・open_directory()・open_file()・open_nbt_connection()・parse_dfs_path()・parse_quota_set()・password_policy()・pdb_create_builtin_alias()・pdb_default_create_alias()・pdb_default_create_user()・pipe_ntlmssp_auth_bind()・process_blocking_lock_cancel_message()・process_request_pdu()・py_ntstatus_tuple()・query_user()・query_user_list()・refresh_sequence_number()・remote_password_change()・rename_internals()・rename_internals_fsp()・reply_checkpath()・reply_flush()・reply_getatr()・reply_mkdir()・reply_nttrans()・reply_sesssetup_and_X()・reply_spnego_kerberos()・reply_trans()・reply_trans2()・reply_write()・reply_write_and_X()・reply_writebmpx()・reply_writebraw()・reply_writeunlock()・rpc_alias_add_internals()・rpc_audit_enable_internal_ext()・rpc_audit_get_internal()・rpc_audit_list_internal()・rpc_audit_set_internal()・rpc_group_add_internals()・rpc_group_addmem_internals()・rpc_group_delmem_internals()・rpc_info_internals()・rpc_list_alias_members()・rpc_oldjoin_internals()・rpc_read()・rpc_rights_grant_internal()・rpc_rights_list_internal()・rpc_rights_revoke_internal()・rpc_sh_acct_do()・rpc_sh_handle_user()・rpc_trustdom_add_internals()・rpc_trustdom_del_internals()・rpc_trustdom_establish()・rpc_trustdom_list()・rpc_trustdom_vampire()・rpc_user_add_internals()・rpc_user_del_internals()・rpc_user_rename_internals()・rpc_vampire_internals()・rpccli_net_srv_pwset()・rpccli_net_srv_pwset2()・run_deletetest()・run_locktest6()・run_rpc_command()・run_sesssetup_bench()・server_cryptkey()・set_auth_errors()・set_dc_type_and_flags()・set_user_info_21()・sid_to_name()・smb_krb5_locator_lookup()・smbc_attr_server()・smbc_errno()・smbldap_search_domain_info()・spoolss_connect_to_client()・test_one()・torture_open_connection_share()・trans2_check_hit()・trusted_domains()・try_nttrans_len()・try_trans2_len()・vampire_trusted_domain()・wcache_get_creds()・winbindd_dual_check_machine_acct()・winbindd_dual_getsidaliases()・winbindd_dual_list_trusted_domains()・winbindd_dual_pam_auth()・winbindd_dual_pam_auth_cached()・winbindd_dual_pam_auth_crap()・winbindd_dual_pam_auth_samlogon()・winbindd_dual_pam_chauthtok()・winbindd_dual_pam_chng_pswd_auth_crap()・winbindd_dual_pam_logoff()・winbindd_raw_kerberos_login()・winbindd_store_creds().
00651 { 00652 static pstring msg; 00653 int idx = 0; 00654 00655 #ifdef HAVE_LDAP 00656 if (NT_STATUS_TYPE(nt_code) == NT_STATUS_TYPE_LDAP) { 00657 return ldap_err2string(NT_STATUS_LDAP_CODE(nt_code)); 00658 } 00659 #endif 00660 00661 slprintf(msg, sizeof(msg), "NT code 0x%08x", NT_STATUS_V(nt_code)); 00662 00663 while (nt_errs[idx].nt_errstr != NULL) { 00664 if (NT_STATUS_EQUAL(nt_errs[idx].nt_errcode, nt_code)) { 00665 return nt_errs[idx].nt_errstr; 00666 } 00667 idx++; 00668 } 00669 00670 return msg; 00671 }
const char* get_friendly_nt_error_msg | ( | NTSTATUS | nt_code | ) |
参照先 nt_err_desc・nt_err_code_struct::nt_errstr・nt_errstr().
参照元 ads_errstr()・do_smb_load_module()・main()・net_ads_join()・net_ads_testjoin()・net_usershare_add()・remote_password_change()・rpc_group_delete_internals()・set_auth_errors()・winbindd_dual_pam_auth()・winbindd_dual_pam_auth_crap()・winbindd_dual_pam_chauthtok()・winbindd_dual_pam_chng_pswd_auth_crap()・winbindd_dual_pam_logoff().
00678 { 00679 int idx = 0; 00680 00681 while (nt_err_desc[idx].nt_errstr != NULL) { 00682 if (NT_STATUS_V(nt_err_desc[idx].nt_errcode) == NT_STATUS_V(nt_code)) { 00683 return nt_err_desc[idx].nt_errstr; 00684 } 00685 idx++; 00686 } 00687 00688 /* fall back to NT_STATUS_XXX string */ 00689 00690 return nt_errstr(nt_code); 00691 }
const char* get_nt_error_c_code | ( | NTSTATUS | nt_code | ) |
参照先 nt_errs・nt_err_code_struct::nt_errstr・nt_errstr().
00698 { 00699 static pstring out; 00700 int idx = 0; 00701 00702 while (nt_errs[idx].nt_errstr != NULL) { 00703 if (NT_STATUS_V(nt_errs[idx].nt_errcode) == 00704 NT_STATUS_V(nt_code)) { 00705 return nt_errs[idx].nt_errstr; 00706 } 00707 idx++; 00708 } 00709 00710 slprintf(out, sizeof(out), "NT_STATUS(0x%08x)", NT_STATUS_V(nt_code)); 00711 00712 return out; 00713 }
NTSTATUS nt_status_string_to_code | ( | char * | nt_status_str | ) |
参照先 nt_err_code_struct::nt_errcode・nt_errs・nt_errstr().
参照元 check_name_to_ntstatus_security().
00720 { 00721 int idx = 0; 00722 00723 while (nt_errs[idx].nt_errstr != NULL) { 00724 if (strcmp(nt_errs[idx].nt_errstr, nt_status_str) == 0) { 00725 return nt_errs[idx].nt_errcode; 00726 } 00727 idx++; 00728 } 00729 return NT_STATUS_UNSUCCESSFUL; 00730 }
Squash an NT_STATUS in line with security requirements.
In an attempt to avoid giving the whole game away when users are authenticating, NT replaces both NT_STATUS_NO_SUCH_USER and NT_STATUS_WRONG_PASSWORD with NT_STATUS_LOGON_FAILURE in certain situations (session setups in particular).
nt_status | NTSTATUS input for squashing. |
参照元 reply_sesssetup_and_X()・reply_sesssetup_and_X_spnego()・reply_sesssetup_blob()・reply_spnego_auth()・reply_spnego_kerberos()・reply_spnego_negotiate()・winbindd_dual_pam_auth_crap().
00744 { 00745 if NT_STATUS_IS_OK(nt_status) { 00746 return nt_status; 00747 } else if NT_STATUS_EQUAL(nt_status, NT_STATUS_NO_SUCH_USER) { 00748 /* Match WinXP and don't give the game away */ 00749 return NT_STATUS_LOGON_FAILURE; 00750 00751 } else if NT_STATUS_EQUAL(nt_status, NT_STATUS_WRONG_PASSWORD) { 00752 /* Match WinXP and don't give the game away */ 00753 return NT_STATUS_LOGON_FAILURE; 00754 } else { 00755 return nt_status; 00756 } 00757 }
const nt_err_code_struct nt_errs[] [static] |