From 2b1009b3f16b2da84803ae0a42acafa3810484ff Mon Sep 17 00:00:00 2001 From: cvs2svn Import User Date: Tue, 10 Jul 2001 09:02:59 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'release-2-2-1'. --- examples/libsmbclient/Makefile | 25 --- examples/libsmbclient/README | 8 - source/nsswitch/winbindd_sid.c | 244 ----------------------- testsuite/lib/default-nt-names.exp | 20 -- testsuite/lib/nsswitch-config.exp | 21 -- testsuite/nsswitch/.cvsignore | 12 -- testsuite/nsswitch/Makefile.longarg | 5 - testsuite/nsswitch/envvar.exp | 282 -------------------------- testsuite/nsswitch/getent.c | 151 -------------- testsuite/nsswitch/getent_grent.c | 101 ---------- testsuite/nsswitch/getent_pwent.c | 113 ----------- testsuite/nsswitch/groupmem_dom.exp | 33 ---- testsuite/nsswitch/initgroups.c | 42 ---- testsuite/nsswitch/initgroups.exp | 37 ---- testsuite/nsswitch/login.exp | 102 ---------- testsuite/nsswitch/longarg.exp | 29 --- testsuite/nsswitch/longarg_getgrnam.c | 42 ---- testsuite/nsswitch/longarg_getpwnam.c | 42 ---- testsuite/nsswitch/longarg_utils.h | 27 --- testsuite/nsswitch/wbinfo.exp | 360 ---------------------------------- 20 files changed, 1696 deletions(-) delete mode 100644 examples/libsmbclient/Makefile delete mode 100644 examples/libsmbclient/README delete mode 100644 source/nsswitch/winbindd_sid.c delete mode 100644 testsuite/lib/default-nt-names.exp delete mode 100644 testsuite/lib/nsswitch-config.exp delete mode 100644 testsuite/nsswitch/.cvsignore delete mode 100644 testsuite/nsswitch/Makefile.longarg delete mode 100644 testsuite/nsswitch/envvar.exp delete mode 100644 testsuite/nsswitch/getent.c delete mode 100644 testsuite/nsswitch/getent_grent.c delete mode 100644 testsuite/nsswitch/getent_pwent.c delete mode 100644 testsuite/nsswitch/groupmem_dom.exp delete mode 100644 testsuite/nsswitch/initgroups.c delete mode 100644 testsuite/nsswitch/initgroups.exp delete mode 100644 testsuite/nsswitch/login.exp delete mode 100644 testsuite/nsswitch/longarg.exp delete mode 100644 testsuite/nsswitch/longarg_getgrnam.c delete mode 100644 testsuite/nsswitch/longarg_getpwnam.c delete mode 100644 testsuite/nsswitch/longarg_utils.h delete mode 100644 testsuite/nsswitch/wbinfo.exp diff --git a/examples/libsmbclient/Makefile b/examples/libsmbclient/Makefile deleted file mode 100644 index 8c1def8a162..00000000000 --- a/examples/libsmbclient/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# -CC = gcc - -SAMBA_INCL = ../../source/include - -CFLAGS = -I$(SAMBA_INCL) - -LDFLAGS = -L/usr/lib - -all: testsmbc tree - -testsmbc: testsmbc.o - @echo Linking testsmbc - @$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lsmbclient - -testsmbc-static: testsmbc.o - @echo Linking testsmbc - @$(CC) $(CFLAGS) -static $(LDFLAGS) -o $@ $< -lsmbclient -ldl -lnsl - -tree: tree.o - @echo Linking tree - @$(CC) `gtk-config --cflags` $(CFLAGS) $(LDFLAGS) -o $@ `gtk-config --libs` -lsmbclient $< - -clean: - @rm -f *.o *~ diff --git a/examples/libsmbclient/README b/examples/libsmbclient/README deleted file mode 100644 index d9a9f829174..00000000000 --- a/examples/libsmbclient/README +++ /dev/null @@ -1,8 +0,0 @@ -Some simple example programs for libsmbclient ... - -testsmbc.c is kinda broken as it has many hardcoded bits in it - -tree.c is an example of how you might do some of these things with GTK+ -It needs lots of work but shows you some ways to use libsmbclient. - -Richard Sharpe, 17-May-2001 ... diff --git a/source/nsswitch/winbindd_sid.c b/source/nsswitch/winbindd_sid.c deleted file mode 100644 index bc014f26918..00000000000 --- a/source/nsswitch/winbindd_sid.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - Unix SMB/Netbios implementation. - Version 2.0 - - Winbind daemon - sid related functions - - Copyright (C) Tim Potter 2000 - - 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 "winbindd.h" -#include "sids.h" - -/* Convert a string */ - -enum winbindd_result winbindd_lookupsid(struct winbindd_cli_state *state) -{ - extern DOM_SID global_sid_Builtin; - enum SID_NAME_USE type; - DOM_SID sid, tmp_sid; - uint32 rid; - fstring name; - - DEBUG(3, ("[%5d]: lookupsid %s\n", state->pid, - state->request.data.sid)); - - /* Lookup sid from PDC using lsa_lookup_sids() */ - - string_to_sid(&sid, state->request.data.sid); - - /* Don't look up BUILTIN sids */ - - sid_copy(&tmp_sid, &sid); - sid_split_rid(&tmp_sid, &rid); - - if (sid_equal(&tmp_sid, &global_sid_Builtin)) { - return WINBINDD_ERROR; - } - - /* Lookup the sid */ - - if (!winbindd_lookup_name_by_sid(&sid, name, &type)) { - return WINBINDD_ERROR; - } - - string_sub(name, "\\", lp_winbind_separator(), sizeof(fstring)); - fstrcpy(state->response.data.name.name, name); - state->response.data.name.type = type; - - return WINBINDD_OK; -} - -/* Convert a sid to a string */ - -enum winbindd_result winbindd_lookupname(struct winbindd_cli_state *state) -{ - enum SID_NAME_USE type; - fstring sid_str, name_domain, name_user, name; - DOM_SID sid; - - DEBUG(3, ("[%5d]: lookupname %s\n", state->pid, - state->request.data.name)); - - parse_domain_user(state->request.data.name, name_domain, name_user); - - snprintf(name, sizeof(name), "%s\\%s", name_domain, name_user); - - /* Lookup name from PDC using lsa_lookup_names() */ - - if (!winbindd_lookup_sid_by_name(name, &sid, &type)) { - return WINBINDD_ERROR; - } - - sid_to_string(sid_str, &sid); - fstrcpy(state->response.data.sid.sid, sid_str); - state->response.data.sid.type = type; - - return WINBINDD_OK; -} - -/* Convert a sid to a uid. We assume we only have one rid attached to the - sid. */ - -enum winbindd_result winbindd_sid_to_uid(struct winbindd_cli_state *state) -{ - DOM_SID sid; - uint32 user_rid; - struct winbindd_domain *domain; - - DEBUG(3, ("[%5d]: sid to uid %s\n", state->pid, - state->request.data.sid)); - - /* Split sid into domain sid and user rid */ - - string_to_sid(&sid, state->request.data.sid); - sid_split_rid(&sid, &user_rid); - - /* Find domain this sid belongs to */ - - if ((domain = find_domain_from_sid(&sid)) == NULL) { - fstring sid_str; - - sid_to_string(sid_str, &sid); - DEBUG(1, ("Could not find domain for sid %s\n", sid_str)); - return WINBINDD_ERROR; - } - - /* Find uid for this sid and return it */ - - if (!winbindd_idmap_get_uid_from_rid(domain->name, user_rid, - &state->response.data.uid)) { - DEBUG(1, ("Could not get uid for sid %s\n", - state->request.data.sid)); - return WINBINDD_ERROR; - } - - return WINBINDD_OK; -} - -/* Convert a sid to a gid. We assume we only have one rid attached to the - sid.*/ - -enum winbindd_result winbindd_sid_to_gid(struct winbindd_cli_state *state) -{ - DOM_SID sid; - uint32 group_rid; - struct winbindd_domain *domain; - - DEBUG(3, ("[%5d]: sid to gid %s\n", state->pid, - state->request.data.sid)); - - /* Split sid into domain sid and user rid */ - - string_to_sid(&sid, state->request.data.sid); - sid_split_rid(&sid, &group_rid); - - /* Find domain this sid belongs to */ - - if ((domain = find_domain_from_sid(&sid)) == NULL) { - fstring sid_str; - - sid_to_string(sid_str, &sid); - DEBUG(1, ("Could not find domain for sid %s\n", sid_str)); - return WINBINDD_ERROR; - } - - /* Find uid for this sid and return it */ - - if (!winbindd_idmap_get_gid_from_rid(domain->name, group_rid, - &state->response.data.gid)) { - DEBUG(1, ("Could not get gid for sid %s\n", - state->request.data.sid)); - return WINBINDD_ERROR; - } - - return WINBINDD_OK; -} - -/* Convert a uid to a sid */ - -enum winbindd_result winbindd_uid_to_sid(struct winbindd_cli_state *state) -{ - struct winbindd_domain *domain; - uint32 user_rid; - DOM_SID sid; - - /* Bug out if the uid isn't in the winbind range */ - - if ((state->request.data.uid < server_state.uid_low ) || - (state->request.data.uid > server_state.uid_high)) { - return WINBINDD_ERROR; - } - - DEBUG(3, ("[%5d]: uid to sid %d\n", state->pid, - state->request.data.uid)); - - /* Lookup rid for this uid */ - - if (!winbindd_idmap_get_rid_from_uid(state->request.data.uid, - &user_rid, &domain)) { - DEBUG(1, ("Could not convert uid %d to rid\n", - state->request.data.uid)); - return WINBINDD_ERROR; - } - - /* Construct sid and return it */ - - sid_copy(&sid, &domain->sid); - sid_append_rid(&sid, user_rid); - sid_to_string(state->response.data.sid.sid, &sid); - state->response.data.sid.type = SID_NAME_USER; - - return WINBINDD_OK; -} - -/* Convert a gid to a sid */ - -enum winbindd_result winbindd_gid_to_sid(struct winbindd_cli_state *state) -{ - struct winbindd_domain *domain; - uint32 group_rid; - DOM_SID sid; - - /* Bug out if the gid isn't in the winbind range */ - - if ((state->request.data.gid < server_state.gid_low) || - (state->request.data.gid > server_state.gid_high)) { - return WINBINDD_ERROR; - } - - DEBUG(3, ("[%5d]: gid to sid %d\n", state->pid, - state->request.data.gid)); - - /* Lookup rid for this uid */ - - if (!winbindd_idmap_get_rid_from_gid(state->request.data.gid, - &group_rid, &domain)) { - DEBUG(1, ("Could not convert gid %d to rid\n", - state->request.data.gid)); - return WINBINDD_ERROR; - } - - /* Construct sid and return it */ - - sid_copy(&sid, &domain->sid); - sid_append_rid(&sid, group_rid); - sid_to_string(state->response.data.sid.sid, &sid); - state->response.data.sid.type = SID_NAME_DOM_GRP; - - return WINBINDD_OK; -} diff --git a/testsuite/lib/default-nt-names.exp b/testsuite/lib/default-nt-names.exp deleted file mode 100644 index 5d01d2a5bb3..00000000000 --- a/testsuite/lib/default-nt-names.exp +++ /dev/null @@ -1,20 +0,0 @@ -# -# A list of default domain/local users/groups. Unfortunately this is tied -# to the English language version of Windows NT. -# - -global domain - -# Domain users and groups - -set domain_users [list "$domain/Administrator" "$domain/Guest"] - -set domain_groups [list "$domain/Domain Admins" "$domain/Domain Guests" \ - "$domain/Domain Users"] - -# Local groups - -set local_groups [list "BUILTIN/Replicator" "BUILTIN/Server Operators" \ - "BUILTIN/Account Operators" "BUILTIN/Backup Operators" \ - "BUILTIN/Print Operators" "BUILTIN/Guests" "BUILTIN/Users" \ - "BUILTIN/Administrators"] diff --git a/testsuite/lib/nsswitch-config.exp b/testsuite/lib/nsswitch-config.exp deleted file mode 100644 index 38342685dfa..00000000000 --- a/testsuite/lib/nsswitch-config.exp +++ /dev/null @@ -1,21 +0,0 @@ -# -# Load environment variables -# - -global tool - -if { [file exists "deja-$tool.tcl"] } { - source "deja-$tool.tcl" -} - -# Required options - -if { ![info exists WORKGROUP] } { - error "\$WORKGROUP not set in config file" -} - -if { ![info exists PDC] } { - error "\$PDC not set in config file" -} - -set domain $WORKGROUP diff --git a/testsuite/nsswitch/.cvsignore b/testsuite/nsswitch/.cvsignore deleted file mode 100644 index 1c30875a884..00000000000 --- a/testsuite/nsswitch/.cvsignore +++ /dev/null @@ -1,12 +0,0 @@ -initgroups -nss_winbind_syms -getgrent_r -getgrgid -getgrnam -getpwent_r -getpwnam -wbtorture -leaktest? -getpwuid -getent_pwent -getent_grent diff --git a/testsuite/nsswitch/Makefile.longarg b/testsuite/nsswitch/Makefile.longarg deleted file mode 100644 index 6cc7ef8306d..00000000000 --- a/testsuite/nsswitch/Makefile.longarg +++ /dev/null @@ -1,5 +0,0 @@ -# -# Makefile for null tests -# - -longarg_getpwnam: longarg_getpwnam.o \ No newline at end of file diff --git a/testsuite/nsswitch/envvar.exp b/testsuite/nsswitch/envvar.exp deleted file mode 100644 index 134a8b37a85..00000000000 --- a/testsuite/nsswitch/envvar.exp +++ /dev/null @@ -1,282 +0,0 @@ -# -# @(#) Test operation of WINBINDD_DOMAIN environment variable -# - -load_lib "util-defs.exp" -load_lib "$srcdir/lib/nsswitch-config.exp" - -# -# @(#) Test that there is at least one domain user and domain group -# @(#) in the output of getent passwd and getent group. -# - -# Get list of users and groups - -set user_list [util_start "getent passwd"] -set group_list [util_start "getent group"] - -verbose "user list is:\n$user_list" -verbose "group list is:\n$group_list" - -# Check for domain users - -set no_dom 0 - -if { ![regexp "$domain/" $user_list] } { - fail "no domain users in getent" - set no_dom 1 -} - -# Check for domain groups - -if { ![regexp "$domain/" $group_list] } { - fail "no domain groups in getent group" - set no_dom 1 -} - -if { $no_dom } { - return -} - -# -# @(#) Check for "leakage" between different domains using the -# @(#) WINBINDD_DOMAIN environment variable. -# - -verbose "Domain is $domain" - -set output [util_start "bin/wbinfo" "-m"] -verbose "Trusted domains are $output" -set trusted_domain_list [split $output "\n"] - -# Test simple inclusion by setting $WINBINDD_DOMAIN to each trusted domain -# in turn and checking there are no users/groups from other domains in the -# output of getent. - -set domain_list $trusted_domain_list -lappend domain_list $domain - -foreach { the_domain } $domain_list { - - set env(WINBINDD_DOMAIN) $the_domain - - set user_out [util_start "getent passwd"] - set group_out [util_start "getent group"] - - verbose "users in $the_domain:\n$user_out\n" - verbose "groups in $the_domain:\n$group_out\n" - - # Users - - set test_desc "users in WINBINDD_DOMAIN $the_domain" - set failed 0 - - foreach { user } [split $user_out "\n"] { - set user_name [lindex [split $user ":"] 0] - if { [regexp "/" $user_name] && ![regexp $the_domain $user_name]} { - set failed 1 - } - } - - if { $failed } { - fail $test_desc - } else { - pass $test_desc - } - - # Groups - - set test_desc "groups in WINBINDD_DOMAIN $the_domain" - set failed 0 - - foreach { group } [split $group_out "\n"] { - set group_name [lindex [split $group ":"] 0] - if { [regexp "/" $group_name] && ![regexp $the_domain $group_name]} { - set failed 1 - } - } - - if { $failed } { - fail $test_desc - } else { - pass $test_desc - } -} - -# -# @(#) Test inclusion of a dummy domain doesn't generate users/groups -# @(#) from that domain. -# - -set env(WINBINDD_DOMAIN) "asmithee" -set user_out [util_start "getent passwd"] -set group_out [util_start "getent group"] - -# Users - -set test_desc "users in different WINBINDD_DOMAIN" -if { [regexp $domain $user_out] } { - fail $test_desc -} else { - pass $test_desc -} - -# Groups - -set test_desc "groups in different WINBINDD_DOMAIN" -if { [regexp $domain $group_out] } { - fail $test_desc -} else { - pass $test_desc -} - -# -# @(#) Test comma separated inclusion of dummy domain doesn't generate -# @(#) users/groups in the dummy domain. -# - -foreach { the_domain } $domain_list { - set env(WINBINDD_DOMAIN) "$the_domain,asmithee" - set user_out [util_start "getent passwd"] - set group_out [util_start "getent group"] - - verbose "users in $the_domain:\n$user_out\n" - verbose "groups in $the_domain:\n$group_out\n" - - # Users - - set test_desc "users in comma separated WINBINDD_DOMAIN $the_domain" - set failed 0 - - foreach { user } [split $user_out "\n"] { - set user_name [lindex [split $user ":"] 0] - if { [regexp "/" $user_name] && ![regexp $the_domain $user_name]} { - set failed 1 - } - } - - if { $failed } { - fail $test_desc - } else { - pass $test_desc - } - - # Groups - - set test_desc "groups in comma separated WINBINDD_DOMAIN $the_domain" - set failed 0 - - foreach { group } [split $group_out "\n"] { - set group_name [lindex [split $group ":"] 0] - if { [regexp "/" $group_name] && ![regexp $the_domain $group_name]} { - set failed 1 - } - } - - if { $failed } { - fail $test_desc - } else { - pass $test_desc - } -} - -# -# @(#) Test two comma separated dummy domains do not generate any domain -# @(#) users or groups. -# - -foreach { the_domain } $domain_list { - - set env(WINBINDD_DOMAIN) "moose,asmithee" - set user_out [util_start "getent passwd"] - set group_out [util_start "getent group"] - - verbose "users in $the_domain:\n$user_out\n" - verbose "groups in $the_domain:\n$group_out\n" - - # Users - - set test_desc "users in comma separated invalid WINBINDD_DOMAIN" - if { [regexp $the_domain $user_out] } { - fail $test_desc - } else { - pass $test_desc - } - - # Groups - - set test_desc "groups in comma separated invalid WINBINDD_DOMAIN" - if { [regexp $the_domain $group_out] } { - fail $test_desc - } else { - pass $test_desc - } -} - -set env(WINBINDD_DOMAIN) "" - -# -# @(#) Test _NO_WINBINDD doesn't return any domain users or groups -# - -set env(_NO_WINBINDD) "1" -set user_out [util_start "getent passwd"] -set group_out [util_start "getent group"] - -verbose "users with _NO_WINBINDD:\n$user_out\n" -verbose "groups with _NO_WINBINDD:\n$group_out\n" - -foreach { the_domain } $domain_list { - - # Users - - set test_desc "users found with _NO_WINBINDD environment variable set" - if { [regexp $the_domain $user_out] } { - fail $test_desc - } else { - pass $test_desc - } - - # Groups - - set test_desc "groups found with _NO_WINBINDD environment variable set" - if { [regexp $the_domain $group_out] } { - fail $test_desc - } else { - pass $test_desc - } -} - -# Unset _NO_WINBINDD and make sure everything still works - -unset env(_NO_WINBINDD) - -set user_out [util_start "getent passwd"] -set group_out [util_start "getent group"] - -verbose "users with _NO_WINBINDD unset:\n$user_out\n" -verbose "groups with _NO_WINBINDD unset:\n$group_out\n" - -# Users - -set test_desc "no users found with _NO_WINBINDD environment variable set" -if { $user_out != $user_list } { - fail $test_desc -} else { - pass $test_desc -} - -# Groups - -set test_desc "no groups found with _NO_WINBINDD environment variable set" -if { $group_out != $group_list } { - fail $test_desc -} else { - pass $test_desc -} - -# Make sure we unset the environment vars so we don't cause subsequent tests -# any grief. - -catch { unset env(WINBINDD_DOMAIN) } tmp -catch { unset env(_NO_WINBINDD) } tmp diff --git a/testsuite/nsswitch/getent.c b/testsuite/nsswitch/getent.c deleted file mode 100644 index b4c4e50c6fe..00000000000 --- a/testsuite/nsswitch/getent.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Cut down version of getent which only returns passwd and group database - entries and seems to compile on most systems without too much fuss. - Original copyright notice below. */ - -/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Thorsten Kukuk , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include -#include - -group_keys (int number, char *key[]) -{ - int result = 0; - int i; - - for (i = 0; i < number; ++i) - { - struct group *grp; - - if (isdigit (key[i][0])) - grp = getgrgid (atol (key[i])); - else - grp = getgrnam (key[i]); - - if (grp == NULL) - result = 2; - else - print_group (grp); - } - - return result; -} - -passwd_keys (int number, char *key[]) -{ - int result = 0; - int i; - - for (i = 0; i < number; ++i) - { - struct passwd *pwd; - - if (isdigit (key[i][0])) - pwd = getpwuid (atol (key[i])); - else - pwd = getpwnam (key[i]); - - if (pwd == NULL) - result = 2; - else - print_passwd (pwd); - } - - return result; -} - -print_group (struct group *grp) -{ - unsigned int i = 0; - - printf ("%s:%s:%ld:", grp->gr_name ? grp->gr_name : "", - grp->gr_passwd ? grp->gr_passwd : "", - (unsigned long)grp->gr_gid); - - while (grp->gr_mem[i] != NULL) - { - fputs (grp->gr_mem[i], stdout); - ++i; - if (grp->gr_mem[i] != NULL) - fputs (",", stdout); - } - fputs ("\n", stdout); -} - -print_passwd (struct passwd *pwd) -{ - printf ("%s:%s:%ld:%ld:%s:%s:%s\n", - pwd->pw_name ? pwd->pw_name : "", - pwd->pw_passwd ? pwd->pw_passwd : "", - (unsigned long)pwd->pw_uid, - (unsigned long)pwd->pw_gid, - pwd->pw_gecos ? pwd->pw_gecos : "", - pwd->pw_dir ? pwd->pw_dir : "", - pwd->pw_shell ? pwd->pw_shell : ""); -} - -int main(int argc, char **argv) -{ - switch(argv[1][0]) - { - case 'g': /* group */ - if (strcmp (argv[1], "group") == 0) - { - if (argc == 2) - { - struct group *grp; - - setgrent (); - while ((grp = getgrent()) != NULL) - print_group (grp); - endgrent (); - } - else - return group_keys (argc - 2, &argv[2]); - } - else - goto error; - break; - - case 'p': /* passwd, protocols */ - if (strcmp (argv[1], "passwd") == 0) - { - if (argc == 2) - { - struct passwd *pwd; - - setpwent (); - while ((pwd = getpwent()) != NULL) - print_passwd (pwd); - endpwent (); - } - else - return passwd_keys (argc - 2, &argv[2]); - } - else - goto error; - break; - default: - error: - fprintf (stderr, "Unknown database: %s\n", argv[1]); - return 1; - } - return 0; -} diff --git a/testsuite/nsswitch/getent_grent.c b/testsuite/nsswitch/getent_grent.c deleted file mode 100644 index 782cc0c86b7..00000000000 --- a/testsuite/nsswitch/getent_grent.c +++ /dev/null @@ -1,101 +0,0 @@ -/* Test out of order operations with {set,get,end}grent */ - -/* - Unix SMB/Netbios implementation. - Version 1.9. - Security context tests - Copyright (C) Tim Potter 2000 - - 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 -#include - -int main (int argc, char **argv) -{ - struct group *gr; - int found = 0; - int num_users, i; - - /* Test getgrent() without setgrent() */ - - for (i = 0; i < 100; i++) { - gr = getgrent(); - - /* This is supposed to work */ - -#if 0 - if (gr != NULL) { - printf("FAIL: getgrent() with no setgrent()\n"); - return 1; - } -#endif - } - - /* Work out how many user till first domain group */ - - num_users = 0; - setgrent(); - - while (1) { - gr = getgrent(); - num_users++; - - if (gr == NULL) break; - - if (strchr(gr->gr_name, '/')) { - found = 1; - break; - } - - } - - if (!found) { - printf("FAIL: could not find any domain groups\n"); - return 1; - } - - /* Test stopping getgrent in the middle of a set of users */ - - endgrent(); - - /* Test setgrent() without any getgrent() calls */ - - setgrent(); - - for (i = 0; i < (num_users - 1); i++) { - getgrent(); - } - - endgrent(); - - /* Test lots of setgrent() calls */ - - for (i = 0; i < 100; i++) { - setgrent(); - } - - /* Test lots of endgrent() calls */ - - for (i = 0; i < 100; i++) { - endgrent(); - } - - /* Everything's cool */ - - printf("PASS\n"); - return 0; -} diff --git a/testsuite/nsswitch/getent_pwent.c b/testsuite/nsswitch/getent_pwent.c deleted file mode 100644 index 96c804433a4..00000000000 --- a/testsuite/nsswitch/getent_pwent.c +++ /dev/null @@ -1,113 +0,0 @@ -/* Test out of order operations with {set,get,end}pwent */ - -/* - Unix SMB/Netbios implementation. - Version 1.9. - Security context tests - Copyright (C) Tim Potter 2000 - - 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 -#include - -int main (int argc, char **argv) -{ - struct passwd *pw; - int found = 0; - int num_users, i; - - /* Test getpwent() without setpwent() */ - - for (i = 0; i < 100; i++) { - pw = getpwent(); - - /* This is supposed to work */ - -#if 0 - if (pw != NULL) { - printf("FAIL: getpwent() with no setpwent()\n"); - return 1; - } -#endif - } - - /* Work out how many user till first domain user */ - - num_users = 0; - setpwent(); - - while (1) { - pw = getpwent(); - num_users++; - - if (pw == NULL) break; - - if (strchr(pw->pw_name, '/')) { - found = 1; - break; - } - - } - - if (!found) { - printf("FAIL: could not find any domain users\n"); - return 1; - } - - /* Test stopping getpwent in the middle of a set of users */ - - endpwent(); - - /* Test setpwent() without any getpwent() calls */ - - setpwent(); - - for (i = 0; i < (num_users - 1); i++) { - getpwent(); - } - - endpwent(); - - /* Test lots of setpwent() calls */ - - setpwent(); - - for (i = 0; i < (num_users - 1); i++) { - getpwent(); - } - - for (i = 0; i < 100; i++) { - setpwent(); - } - - /* Test lots of endpwent() calls */ - - setpwent(); - - for (i = 0; i < (num_users - 1); i++) { - getpwent(); - } - - for (i = 0; i < 100; i++) { - endpwent(); - } - - /* Everything's cool */ - - printf("PASS\n"); - return 0; -} diff --git a/testsuite/nsswitch/groupmem_dom.exp b/testsuite/nsswitch/groupmem_dom.exp deleted file mode 100644 index 3ba34bb810e..00000000000 --- a/testsuite/nsswitch/groupmem_dom.exp +++ /dev/null @@ -1,33 +0,0 @@ -# -# @(#) Test whether members of domain groups all have domain names -# - -load_lib util-defs.exp - -set group_list [split [util_start "getent group" ""] "\n"] -set failed 0 - -foreach { group } $group_list { - set group_entry [split $group ":"] - - set group_name [lindex $group_entry 0] - set group_members [split [lindex $group_entry 3] ","] - - if { [regexp {^[^/]+/} $group_name] } { - - verbose "group $group_name has members $group_members" - - foreach { user } $group_members { - if { ![regexp {^[^/]+/} $user] } { - fail "group $group has non-domain user $user" - set failed 1 - } - } - } else { - verbose "ignoring non-domain group $group_name" - } -} - -if { !$failed } { - pass "domain groups contain only domain members" -} diff --git a/testsuite/nsswitch/initgroups.c b/testsuite/nsswitch/initgroups.c deleted file mode 100644 index b7d9c50eaa3..00000000000 --- a/testsuite/nsswitch/initgroups.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include -#include -#include -#include - -int main(int argc, char **argv) -{ - int result, ngroups, i; - gid_t *groups; - struct passwd *pw; - - if (!(pw = getpwnam(argv[1]))) { - printf("FAIL: no passwd entry for %s\n", argv[1]); - return 1; - } - - result = initgroups(argv[1], pw->pw_gid); - - if (result == -1) { - printf("FAIL"); - return 1; - } - - ngroups = getgroups(0, NULL); - - groups = (gid_t *)malloc(sizeof(gid_t) * ngroups); - ngroups = getgroups(ngroups, groups); - - printf("%s is a member of groups:\n", argv[1]); - - for (i = 0; i < ngroups; i++) { - struct group *grp; - - grp = getgrgid(groups[i]); - - printf("%d (%s)\n", groups[i], grp ? grp->gr_name : "?"); - } - - printf("PASS\n"); - return 0; -} diff --git a/testsuite/nsswitch/initgroups.exp b/testsuite/nsswitch/initgroups.exp deleted file mode 100644 index ab21bcc9e7b..00000000000 --- a/testsuite/nsswitch/initgroups.exp +++ /dev/null @@ -1,37 +0,0 @@ -# -# @(#) Test initgroups function -# - -load_lib util-defs.exp -load_lib compile.exp - -if { [util_start "id -u"] != 0 } { - set test_desc "must be userid 0 to run" - note $test_desc - untested $test_desc - return -} - -# Compile test program - -simple_compile "initgroups" - -# Test domain users - -set user_list [split [util_start "bin/wbinfo" "-u"] "\n"] - -verbose $user_list - -foreach { user } $user_list { - set output [util_start "$srcdir/$subdir/initgroups" "\"$user\"" ""] - - verbose $output - - set test_desc "initgroups $user" - - if { [regexp "PASS" $output] } { - pass $test_desc - } else { - fail $test_desc - } -} diff --git a/testsuite/nsswitch/login.exp b/testsuite/nsswitch/login.exp deleted file mode 100644 index c2bb0e5a40a..00000000000 --- a/testsuite/nsswitch/login.exp +++ /dev/null @@ -1,102 +0,0 @@ -# -# @(#) Test logins using pam_winbind.so module using telnet -# - -load_lib util-defs.exp -load_lib nsswitch-config.exp - -# -# @(#) Test user can login -# - -spawn telnet localhost - -set test_desc "telnet localhost (login)" - -expect { - "login:" { } - timeout { fail "timed out in $test_desc"; return } - eof { fail "end of file in $test_desc"; return } -} - -send "$domain/$USER\r" - -set test_desc "telnet localhost (password)" - -expect { - "Password:" { } - timeout { fail "timed out in $test_desc"; return } - eof { fail "end of file in $test_desc"; return } -} - -send "$PASSWORD\r" - -expect { - "$ " { } - "Login incorrect" { fail "login incorrect"; return } - timeout { fail "timed out in $test_desc"; return } - eof { fail "end of file in $test_desc"; return } -} - -pass "login $domain/$USER" - -# -# @(#) Check supplementary group membership -# - -set test_desc "supplementary groups" - -# Get list of groups - -send "id -G\r" - -expect { - -re "((\[0-9]+ )*\[0-9]+\r)" { exp_continue; } - "$ " { } - timeout { fail "timed out in $test_desc"; return } - eof { fail "end of file in $test_desc"; return } -} - -set groups $expect_out(1,string) -set wb_groups [util_start "bin/wbinfo" "-r $domain/$USER"] - -verbose "id groups are $groups" -verbose "wbinfo groups are $wb_groups" - -# Check all groups from id are in wbinfo and vice-versa - -set failed 0 - -foreach { group } $groups { - set got_group 0 - foreach { wb_group } $wb_groups { - if { $wb_group == $group } { - set got_group 1 - break - } - } - - if { !$got_group } { - fail "group $group not in output of wbinfo -r" - set failed 1 - } -} - -foreach { wb_group } $wb_groups { - set got_group 0 - foreach { group } $groups { - if { $group == $wb_group } { - set got_group 1 - break - } - } - - if { !$got_group } { - fail "group $group not in output of id -G" - set failed 1 - } -} - -if { !$failed } { - pass "id/wbinfo groups match" -} diff --git a/testsuite/nsswitch/longarg.exp b/testsuite/nsswitch/longarg.exp deleted file mode 100644 index e1d0eda9ccb..00000000000 --- a/testsuite/nsswitch/longarg.exp +++ /dev/null @@ -1,29 +0,0 @@ -# -# @(#) Test handling of long arguments passed to various nss functions -# - -load_lib compile.exp -load_lib util-defs.exp - -# Run tests from C source files - -set longarg_tests [list \ - { "long arg to getpwnam()" "longarg_getpwnam" } \ - { "long arg to getgrnam()" "longarg_getgrnam" } \ - ] - -foreach { test } $longarg_tests { - set test_desc [lindex $test 0] - set test_file [lindex $test 1] - - simple_make "longarg" $test_file - set output [util_start "$srcdir/$subdir/$test_file" ] - - if { [regexp "PASS" $output] } { - pass $test_desc - file delete "$srcdir/$subdir/$test_file" "$srcdir/$subdir/$test_file.o" - } else { - fail $test_desc - puts $output - } -} diff --git a/testsuite/nsswitch/longarg_getgrnam.c b/testsuite/nsswitch/longarg_getgrnam.c deleted file mode 100644 index 84083d2620e..00000000000 --- a/testsuite/nsswitch/longarg_getgrnam.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - Unix SMB/Netbios implementation. - Version 1.9. - Security context tests - Copyright (C) Tim Potter 2000 - - 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 -#include -#include -#include - -#include "longarg_utils.h" - -int main(void) -{ - struct group *grp; - char *domain = getenv("TEST_WORKGROUP"); - char long_name[65535]; - int failed = 0; - - sprintf(long_name, "%s/%s", domain, LONG_STRING); - - grp = getgrnam(long_name); - printf("%s\n", !grp ? "PASS" : "FAIL"); - - return grp == NULL; -} diff --git a/testsuite/nsswitch/longarg_getpwnam.c b/testsuite/nsswitch/longarg_getpwnam.c deleted file mode 100644 index f2a0a73ddca..00000000000 --- a/testsuite/nsswitch/longarg_getpwnam.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - Unix SMB/Netbios implementation. - Version 1.9. - Security context tests - Copyright (C) Tim Potter 2000 - - 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 -#include -#include -#include - -#include "longarg_utils.h" - -int main(void) -{ - struct passwd *pwd; - char *domain = getenv("TEST_WORKGROUP"); - char long_name[65535]; - int failed = 0; - - sprintf(long_name, "%s/%s", domain, LONG_STRING); - - pwd = getpwnam(long_name); - printf("%s\n", !pwd ? "PASS" : "FAIL"); - - return pwd == NULL; -} diff --git a/testsuite/nsswitch/longarg_utils.h b/testsuite/nsswitch/longarg_utils.h deleted file mode 100644 index 1f2f2a7065d..00000000000 --- a/testsuite/nsswitch/longarg_utils.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - Unix SMB/Netbios implementation. - Version 1.9. - Security context tests - Copyright (C) Tim Potter 2000 - - 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. -*/ - -#ifndef _LONGARG_UTILS_H -#define _LONGARG_UTILS_H - -#define LONG_STRING "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - -#endif diff --git a/testsuite/nsswitch/wbinfo.exp b/testsuite/nsswitch/wbinfo.exp deleted file mode 100644 index 3518db387be..00000000000 --- a/testsuite/nsswitch/wbinfo.exp +++ /dev/null @@ -1,360 +0,0 @@ -# -# @(#) Test wbinfo client access to winbind daemon -# - -load_lib "util-defs.exp" -load_lib "$srcdir/lib/nsswitch-config.exp" -load_lib "$srcdir/lib/default-nt-names.exp" - -# Name types - -set SID_NAME_USER 1 -set SID_NAME_DOM_GRP 2 -set SID_NAME_DOMAIN 3 -set SID_NAME_ALIAS 4 -set SID_NAME_UNKNOWN 8 - -# Get list of users and groups - -set user_list [util_start "bin/wbinfo" "-u"] -set group_list [util_start "bin/wbinfo" "-g"] - -verbose "user list is:\n$user_list" -verbose "group list is:\n$group_list" - -set user_list [split $user_list "\n"] -set group_list [split $group_list "\n"] - -# -# @(#) Check list of users and groups contain default NT user and group -# @(#) names -# - -# Users - -foreach { user } $domain_users { - set test_desc "user $user in wbinfo domain users" - if {![regexp $user $user_list]} { - fail $test_desc - } else { - pass $test_desc - } -} - -# Groups - -foreach { group } $domain_groups { - set test_desc "group $group in wbinfo domain groups" - if {![regexp $group $group_list]} { - fail $test_desc - } else { - pass $test_desc - } -} - -# -# @(#) Lookup sids for all user and group names returned by wbinfo -# - -# Users - -foreach { user } $user_list { - set test_desc "get sid for user $user" - set output [util_start "bin/wbinfo" "-n \"$user\""] - - verbose $output - - # Split output into name and name_type - - set list [split $output " "] - set sid_type [lindex $list [expr [llength $list] - 1]] - set sid [join [lrange $list 0 [expr [llength $list] - 2]] " "] - - if { ![regexp "S-" $sid] } { - fail $test_desc - } else { - pass $test_desc - } - - set test_desc "sid type for user $user" - if { $sid_type != $SID_NAME_USER } { - fail $test_desc - } else { - pass $test_desc - } - - lappend user_sid_list $sid -} - -# Groups - -foreach { group } $group_list { - set test_desc "get sid for group $group" - set output [util_start "bin/wbinfo" "-n \"$group\""] - - verbose $output - - # Split output into sid and sid type - - set list [split $output " "] - set sid_type [lindex $list [expr [llength $list] - 1]] - set sid [join [lrange $list 0 [expr [llength $list] - 2]] " "] - - if { ![regexp "S-" $sid] } { - fail $test_desc - } else { - pass $test_desc - } - - set test_desc "sid type for group group" - if { $sid_type != $SID_NAME_DOM_GRP } { - fail $test_desc - } else { - pass $test_desc - } - - lappend group_sid_list $sid -} - -# -# @(#) Check reverse lookup of sids to names -# - -# Users - -set count 0 - -foreach { sid } $user_sid_list { - set test_desc "reverse user name lookup for sid $sid" - set output [util_start "bin/wbinfo" "-s $sid"] - - verbose $output - - # Split output into name and name_type - - set list [split $output " "] - set name_type [lindex $list [expr [llength $list] - 1]] - set name [join [lrange $list 0 [expr [llength $list] - 2]] " "] - - if { $name != [lindex $user_list $count] } { - fail $test_desc - } else { - pass $test_desc - } - - set test_desc "reverse user name type lookup for sid $sid" - - if { $name_type != 1 } { - fail $test_desc - } else { - pass $test_desc - } - - incr count -} - -# Groups - -set count 0 - -foreach { sid } $group_sid_list { - set test_desc "reverse group name lookup for sid $sid" - set output [util_start "bin/wbinfo" "-s $sid"] - - verbose $output - - # Split output into name and name_type - - set list [split $output " "] - set name_type [lindex $list [expr [llength $list] - 1]] - set name [join [lrange $list 0 [expr [llength $list] - 2]] " "] - - if { $name != [lindex $group_list $count] } { - fail $test_desc - } else { - pass $test_desc - } - - set test_desc "reverse group name type lookup for sid $sid" - - if { $name_type != 2 } { - fail $test_desc - } else { - pass $test_desc - } - - incr count -} - -# -# @(#) Cross-check the output of wbinfo -n, getent passwd/group and -# @(#) wbinfo -S -# - -# Get mapped list of uids from winbindd - -set output [util_start "getent" "passwd"] -set user_list [split $output "\n"] - -foreach { user_entry } $user_list { - if { [regexp $domain $user_entry] } { - set field_list [split $user_entry ":"] - set name_output [util_start "bin/wbinfo" \ - "-n \"[lindex $field_list 0]\""] - set list [split $name_output " "] - set name_type [lindex $list [expr [llength $list] - 1]] - set name [join [lrange $list 0 [expr [llength $list] - 2]] " "] - set username_uid_sid [lappend username_uid_sid [list \ - [lindex $field_list 0] \ - [lindex $field_list 2] \ - $name]] - } -} - -# Get mapped list of gids from winbindd - -set output [util_start "getent" "group"] -set group_list [split $output "\n"] - -foreach { group_entry } $group_list { - if { [regexp $domain $group_entry] } { - set field_list [split $group_entry ":"] - set groupname_gid_sid [lappend groupname_gid_sid [list \ - [lindex $field_list 0] \ - [lindex $field_list 2] \ - [util_start "bin/wbinfo" "-n \"[lindex $field_list 0]\""]]] - } -} - -# OK, now we have enough info to cross-check the uid/gid -> sid and -# sid -> uid/gid functions - -foreach { user } $username_uid_sid { - set sid [util_start "bin/wbinfo" "-U [lindex $user 1]"] - set uid [util_start "bin/wbinfo" "-S [lindex $user 2]"] - - set test_desc "lookup sid by uid [lindex $user 1]" - - if { $sid != [lindex $user 2] } { - fail $test_desc - } else { - pass $test_desc - } - - set test_desc "lookup uid by sid [lindex $user 2]" - - if { $uid != [lindex $user 1] } { - fail $test_desc - } else { - pass $test_desc - } -} - -foreach { group } $groupname_gid_sid { - set sid [util_start "bin/wbinfo" "-G [lindex $group 1]"] - set gid [util_start "bin/wbinfo" "-Y [lindex $group 2]"] - - set test_desc "lookup sid by gid [lindex $group 1]" - - if { $sid != [lindex [split [lindex $group 2] " "] 0] || - [lindex [split [lindex $group 2] " " ] 1] != 2 } { - fail $test_desc - } else { - pass $test_desc - } - - set test_desc "lookup gid by sid [lindex $group 2]" - - if { $gid != [lindex $group 1] } { - fail $test_desc - } else { - pass $test_desc - } -} - -# Check exit codes - -proc check_errcode { args } { - global errorCode - set test_desc [lindex $args 0] - set cmd [lindex $args 1] - set result [lindex $args 2] - - set errorCode "" - verbose "Spawning $cmd" - catch "exec $cmd" output - set exit_code [lindex $errorCode 2] - if { $exit_code == "" } { set exit_code 0 } - - if { $exit_code == $result } { - verbose "process returned correct exit code $exit_code" - pass $test_desc - } else { - verbose "process returned bad exit code $exit_code instead of $result" - fail $test_desc - } -} - -set gooduser_name [lindex [split [lindex $user_list 0] ":"] 0] -set gooduser_sid [util_start "bin/wbinfo" "-n $gooduser_name"] - -set goodgroup_name [lindex [split [lindex $group_list 0] ":"] 0] -set goodgroup_sid [util_start "bin/wbinfo" "-n $goodgroup_name"] - -# Some conditions not tested: -# - bad list users/groups -# - good uid/gid to sid - -set errcode_tests [list \ - { "no arg" "bin/wbinfo" 1 } \ - { "invalid arg" "bin/wbinfo -@" 1 } \ - { "list users" "bin/wbinfo -u" 0 } \ - { "list groups" "bin/wbinfo -g" 0 } \ - { "good name to sid" "bin/wbinfo -n $gooduser_name" 0 } \ - { "bad name to sid" "bin/wbinfo -n asmithee" 0 } \ - { "good sid to name" "bin/wbinfo -s $gooduser_sid" 0 } \ - { "bad sid to name" "bin/wbinfo -s S-1234" 1 } \ - { "bad uid to sid" "bin/wbinfo -U 0" 1 } \ - { "bad gid to sid" "bin/wbinfo -G 0" 1} \ - { "good sid to uid" "bin/wbinfo -S $gooduser_sid" 0 } \ - { "bad sid to uid" "bin/wbinfo -S S-1234" 1 } \ - { "good sid to gid" "bin/wbinfo -Y $goodgroup_sid" 0 } \ - { "bad sid to gid" "bin/wbinfo -Y S-1234" 1 } \ - ] - -foreach { test } $errcode_tests { - check_errcode [lindex $test 0] [lindex $test 1] [lindex $test 2] -} - -# Test enumerate trusted domains - -set test_desc "enumerate trusted domains" -set output [util_start "bin/wbinfo" "-m"] - -verbose $output - -foreach { the_domain } $output { - if { $the_domain == $domain} { - fail "own domain appears in trusted list" - } -} - -if {[regexp "Usage" $output] || [regexp "Could not" $output]} { - fail $test_desc -} else { - pass $test_desc -} - -# Test check machine account - -set test_desc "check machine account" -set output [util_start "bin/wbinfo" "-t"] - -verbose $output - -if {[regexp "Usage" $output] || [regexp "Could not" $output] || \ - ![regexp "(good|bad)" $output]} { - fail $test_desc -} else { - pass $test_desc -} -- 2.11.4.GIT