summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorcvs2svn Import User <samba-bugs@samba.org>2003-03-19 18:45:20 +0000
committercvs2svn Import User <samba-bugs@samba.org>2003-03-19 18:45:20 +0000
commit1719a676f3dc118c2de320781a916c33b56d7640 (patch)
tree6105292f5dec1be142b973277f92d747200583cb /source3
parent9da46eec53f8a7773eeb6ab841e41adc32f39d64 (diff)
parent47ea3a2bf242a446f658f1573ec5d3ea533333f0 (diff)
downloadsamba-1719a676f3dc118c2de320781a916c33b56d7640.tar.gz
samba-1719a676f3dc118c2de320781a916c33b56d7640.tar.bz2
samba-1719a676f3dc118c2de320781a916c33b56d7640.zip
This commit was manufactured by cvs2svn to create branch 'SAMBA_3_0'.(This used to be commit 6f94672d3da070aae0b17f4dcdc6cd119b68d84c)
Diffstat (limited to 'source3')
-rw-r--r--source3/passdb/pdb_guest.c129
-rw-r--r--source3/registry/.cvsignore2
-rw-r--r--source3/stf/standardcheck.py33
-rwxr-xr-xsource3/stf/strings.py69
4 files changed, 233 insertions, 0 deletions
diff --git a/source3/passdb/pdb_guest.c b/source3/passdb/pdb_guest.c
new file mode 100644
index 0000000000..f5a15057e0
--- /dev/null
+++ b/source3/passdb/pdb_guest.c
@@ -0,0 +1,129 @@
+/*
+ * 'Guest' password backend for samba
+ * Copyright (C) Jelmer Vernooij 2002
+ * Copyright (C) Andrew Bartlett 2003
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 675
+ * Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "includes.h"
+
+/******************************************************************
+ Lookup a name in the SAM database
+ ******************************************************************/
+
+static NTSTATUS guestsam_getsampwnam (struct pdb_methods *methods, SAM_ACCOUNT *user, const char *sname)
+{
+ NTSTATUS nt_status;
+ struct passwd *pass;
+ const char *guest_account = lp_guestaccount();
+ if (!(guest_account && *guest_account)) {
+ DEBUG(1, ("NULL guest account!?!?\n"));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
+ if (!methods) {
+ DEBUG(0,("invalid methods\n"));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+ if (!sname) {
+ DEBUG(0,("invalid name specified"));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
+ if (!strequal(guest_account, sname)) {
+ return NT_STATUS_NO_SUCH_USER;
+ }
+
+ pass = getpwnam_alloc(guest_account);
+
+ nt_status = pdb_fill_sam_pw(user, pass);
+
+ passwd_free(&pass);
+ return nt_status;
+}
+
+
+/***************************************************************************
+ Search by rid
+ **************************************************************************/
+
+static NTSTATUS guestsam_getsampwrid (struct pdb_methods *methods,
+ SAM_ACCOUNT *user, uint32 rid)
+{
+ NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
+ struct passwd *pass = NULL;
+ const char *guest_account = lp_guestaccount();
+ if (!(guest_account && *guest_account)) {
+ DEBUG(1, ("NULL guest account!?!?\n"));
+ return nt_status;
+ }
+
+ if (!methods) {
+ DEBUG(0,("invalid methods\n"));
+ return nt_status;
+ }
+
+ if (rid == DOMAIN_USER_RID_GUEST) {
+ pass = getpwnam_alloc(guest_account);
+ if (!pass) {
+ DEBUG(1, ("guest account %s does not seem to exist...\n", guest_account));
+ return NT_STATUS_NO_SUCH_USER;
+ }
+ } else {
+ return NT_STATUS_NO_SUCH_USER;
+ }
+
+ nt_status = pdb_fill_sam_pw(user, pass);
+ passwd_free(&pass);
+
+ return nt_status;
+}
+
+static NTSTATUS guestsam_getsampwsid(struct pdb_methods *my_methods, SAM_ACCOUNT * user, const DOM_SID *sid)
+{
+ uint32 rid;
+ if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid))
+ return NT_STATUS_NO_SUCH_USER;
+ return guestsam_getsampwrid(my_methods, user, rid);
+}
+
+NTSTATUS pdb_init_guestsam(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
+{
+ NTSTATUS nt_status;
+
+ if (!pdb_context) {
+ DEBUG(0, ("invalid pdb_context specified\n"));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
+ if (!NT_STATUS_IS_OK(nt_status = make_pdb_methods(pdb_context->mem_ctx, pdb_method))) {
+ return nt_status;
+ }
+
+ (*pdb_method)->name = "guestsam";
+
+ (*pdb_method)->getsampwnam = guestsam_getsampwnam;
+ (*pdb_method)->getsampwsid = guestsam_getsampwsid;
+
+ /* There's not very much to initialise here */
+ return NT_STATUS_OK;
+}
+
+int pdb_guest_init(void)
+{
+ return smb_register_passdb("guest", pdb_init_guestsam, PASSDB_INTERFACE_VERSION);
+}
+
diff --git a/source3/registry/.cvsignore b/source3/registry/.cvsignore
new file mode 100644
index 0000000000..22beab949c
--- /dev/null
+++ b/source3/registry/.cvsignore
@@ -0,0 +1,2 @@
+.po
+.po32
diff --git a/source3/stf/standardcheck.py b/source3/stf/standardcheck.py
new file mode 100644
index 0000000000..5af1c78376
--- /dev/null
+++ b/source3/stf/standardcheck.py
@@ -0,0 +1,33 @@
+#! /usr/bin/python
+
+# Comfychair test cases for Samba
+
+# Copyright (C) 2003 by Martin Pool <mbp@samba.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+
+"""These tests are run by Samba's "make check"."""
+
+import strings, comfychair
+
+# There should not be any actual tests in here: this file just serves
+# to define the ones run by default. They're imported from other
+# modules.
+
+tests = strings.tests
+
+if __name__ == '__main__':
+ comfychair.main(tests)
diff --git a/source3/stf/strings.py b/source3/stf/strings.py
new file mode 100755
index 0000000000..a67e137058
--- /dev/null
+++ b/source3/stf/strings.py
@@ -0,0 +1,69 @@
+#! /usr/bin/python
+
+# Comfychair test cases for Samba string functions.
+
+# Copyright (C) 2003 by Martin Pool <mbp@samba.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA
+
+import sys, re, comfychair
+
+def signum(a):
+ if a < 0:
+ return -1
+ elif a > 0:
+ return +1
+ else:
+ return 0
+
+
+class StrCaseCmp_Ascii_Tests(comfychair.TestCase):
+ """String comparisons in simple ASCII"""
+ def run_strcmp(self, a, b, expect):
+ out = self.runcmd('t_strcmp \"%s\" \"%s\"' % (a, b))
+ if signum(int(out)) != expect:
+ self.fail("comparison failed:\n"
+ " a=%s\n"
+ " b=%s\n"
+ " expected=%s\n"
+ " result=%s\n" % (`a`, `b`, `expect`, `out`))
+
+ def runtest(self):
+ # A, B, strcasecmp(A, B)
+ cases = [('hello', 'hello', 0),
+ ('hello', 'goodbye', +1),
+ ('goodbye', 'hello', -1),
+ ('hell', 'hello', -1),
+ ('', '', 0),
+ ('a', '', +1),
+ ('', 'a', -1),
+ ('a', 'A', 0),
+ ('aa', 'aA', 0),
+ ('Aa', 'aa', 0),
+ ('longstring ' * 100, 'longstring ' * 100, 0),
+ ('longstring ' * 100, 'longstring ' * 100 + 'a', -1),
+ ('longstring ' * 100 + 'a', 'longstring ' * 100, +1),
+ ]
+ for a, b, expect in cases:
+ self.run_strcmp(a, b, expect)
+
+# Define the tests exported by this module
+tests = [StrCaseCmp_Ascii_Tests]
+
+# Handle execution of this file as a main program
+if __name__ == '__main__':
+ comfychair.main(tests)
+