libsmb/nterr.c

ソースコードを見る。

データ構造

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  ) 

nterr.c650 行で定義されています。

参照先 nt_errsnt_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  ) 

nterr.c677 行で定義されています。

参照先 nt_err_descnt_err_code_struct::nt_errstrnt_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  ) 

nterr.c697 行で定義されています。

参照先 nt_errsnt_err_code_struct::nt_errstrnt_errstr().

参照元 run_error_map_extract().

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  ) 

nterr.c719 行で定義されています。

参照先 nt_err_code_struct::nt_errcodent_errsnt_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 }

NTSTATUS nt_status_squash ( NTSTATUS  nt_status  ) 

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.
戻り値:
the 'squashed' nt_status

nterr.c743 行で定義されています。

参照元 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]

nterr.c31 行で定義されています。

参照元 get_nt_error_c_code()nt_errstr()nt_status_string_to_code().

nt_err_code_struct nt_err_desc[]

nterr.c548 行で定義されています。

参照元 get_friendly_nt_error_msg().


Sambaに対してSat Aug 29 21:23:49 2009に生成されました。  doxygen 1.4.7