diff options
-rw-r--r-- | source3/auth/auth_builtin.c | 33 | ||||
-rw-r--r-- | source3/auth/auth_info.c | 3 | ||||
-rw-r--r-- | source3/smbd/auth_builtin.c | 33 | ||||
-rw-r--r-- | source3/smbd/auth_info.c | 3 |
4 files changed, 72 insertions, 0 deletions
diff --git a/source3/auth/auth_builtin.c b/source3/auth/auth_builtin.c index 6ea6d0bbe0..482ae6dee1 100644 --- a/source3/auth/auth_builtin.c +++ b/source3/auth/auth_builtin.c @@ -85,3 +85,36 @@ BOOL auth_init_local(auth_methods **auth_method) return True; } +/**************************************************************************** + Return an error based on username +****************************************************************************/ + +static NTSTATUS check_name_to_ntstatus_security(void *my_private_data, + const auth_usersupplied_info *user_info, + const auth_authsupplied_info *auth_info, + auth_serversupplied_info **server_info) +{ + NTSTATUS nt_status; + fstring user; + long error_num; + fstrcpy(user, user_info->smb_name.str); + strlower(user); + error_num = strtoul(user, NULL, 16); + + DEBUG(5,("Error for user %s was %lx\n", user, error_num)); + + nt_status = NT_STATUS(error_num); + + return nt_status; +} + +BOOL auth_init_name_to_ntstatus(auth_methods **auth_method) +{ + if (!make_auth_methods(auth_method)) { + return False; + } + + (*auth_method)->auth = check_name_to_ntstatus_security; + return True; +} + diff --git a/source3/auth/auth_info.c b/source3/auth/auth_info.c index 12b843d781..b1c994d54f 100644 --- a/source3/auth/auth_info.c +++ b/source3/auth/auth_info.c @@ -31,6 +31,9 @@ const struct auth_init_function builtin_auth_init_functions[] = { { "smbserver", auth_init_smbserver }, { "ntdomain", auth_init_ntdomain }, { "winbind", auth_init_winbind }, +#ifdef DEVELOPER + { "name_to_ntstatus", auth_init_name_to_ntstatus }, +#endif { NULL, NULL} }; diff --git a/source3/smbd/auth_builtin.c b/source3/smbd/auth_builtin.c index 6ea6d0bbe0..482ae6dee1 100644 --- a/source3/smbd/auth_builtin.c +++ b/source3/smbd/auth_builtin.c @@ -85,3 +85,36 @@ BOOL auth_init_local(auth_methods **auth_method) return True; } +/**************************************************************************** + Return an error based on username +****************************************************************************/ + +static NTSTATUS check_name_to_ntstatus_security(void *my_private_data, + const auth_usersupplied_info *user_info, + const auth_authsupplied_info *auth_info, + auth_serversupplied_info **server_info) +{ + NTSTATUS nt_status; + fstring user; + long error_num; + fstrcpy(user, user_info->smb_name.str); + strlower(user); + error_num = strtoul(user, NULL, 16); + + DEBUG(5,("Error for user %s was %lx\n", user, error_num)); + + nt_status = NT_STATUS(error_num); + + return nt_status; +} + +BOOL auth_init_name_to_ntstatus(auth_methods **auth_method) +{ + if (!make_auth_methods(auth_method)) { + return False; + } + + (*auth_method)->auth = check_name_to_ntstatus_security; + return True; +} + diff --git a/source3/smbd/auth_info.c b/source3/smbd/auth_info.c index 12b843d781..b1c994d54f 100644 --- a/source3/smbd/auth_info.c +++ b/source3/smbd/auth_info.c @@ -31,6 +31,9 @@ const struct auth_init_function builtin_auth_init_functions[] = { { "smbserver", auth_init_smbserver }, { "ntdomain", auth_init_ntdomain }, { "winbind", auth_init_winbind }, +#ifdef DEVELOPER + { "name_to_ntstatus", auth_init_name_to_ntstatus }, +#endif { NULL, NULL} }; |