summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2001-11-25 03:01:14 +0000
committerAndrew Bartlett <abartlet@samba.org>2001-11-25 03:01:14 +0000
commit1b1b8e39b2ce4bf32517e7178ca18b3fd8fecd03 (patch)
tree6e319eafb2c2b802fa98245cd973aa275c177811
parente92823610acb138ca63648f04a57427f8dbf0b41 (diff)
downloadsamba-1b1b8e39b2ce4bf32517e7178ca18b3fd8fecd03.tar.gz
samba-1b1b8e39b2ce4bf32517e7178ca18b3fd8fecd03.tar.bz2
samba-1b1b8e39b2ce4bf32517e7178ca18b3fd8fecd03.zip
Add the PDC end of the smbtorture test for creating an NT_STATUS -> DOS error
map. This little authentication module is #ifdef DEVELOPER, becouse it really is of no use execept as a development tool invoke by setting: auth methods = guest sam name_to_ntstatus in the smb.conf file (the SAM and guest elements are required for the member server to authenticate itself). Andrew Bartlett (This used to be commit 9807e66f34c1088399657060977e384c5a7f0664)
-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}
};