summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/auth/auth_builtin.c33
-rw-r--r--source3/auth/auth_info.c3
-rw-r--r--source3/smbd/auth_builtin.c33
-rw-r--r--source3/smbd/auth_info.c3
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}
};