summaryrefslogtreecommitdiff
path: root/source3/nsswitch
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nsswitch')
-rw-r--r--source3/nsswitch/winbindd.c29
-rw-r--r--source3/nsswitch/winbindd_util.c8
2 files changed, 22 insertions, 15 deletions
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c
index 7dbdca97ee..059d2f40d3 100644
--- a/source3/nsswitch/winbindd.c
+++ b/source3/nsswitch/winbindd.c
@@ -3,7 +3,7 @@
Winbind daemon for ntdom nss module
- Copyright (C) by Tim Potter 2000, 2001
+ Copyright (C) by Tim Potter 2000-2002
Copyright (C) Andrew Tridgell 2002
This program is free software; you can redistribute it and/or modify
@@ -670,19 +670,23 @@ static void process_loop(void)
/*
these are split out from the main winbindd for use by the background daemon
*/
-int winbind_setup_common(void)
+BOOL winbind_setup_common(void)
{
- load_interfaces();
+ load_interfaces();
if (!secrets_init()) {
DEBUG(0,("Could not initialize domain trust account secrets. Giving up\n"));
- return 1;
-
+ return False;
}
namecache_enable(); /* Enable netbios namecache */
+ /* Check winbindd parameters are valid */
+
+ if (!winbindd_param_init())
+ return False;
+
/* Get list of domains we look up requests for. This includes the
domain which we are a member of as well as any trusted
domains. */
@@ -693,11 +697,8 @@ int winbind_setup_common(void)
/* Winbind daemon initialisation */
- if (!winbindd_param_init())
- return 1;
-
if (!winbindd_idmap_init())
- return 1;
+ return False;
/* Unblock all signals we are interested in as they may have been
blocked by the parent process. */
@@ -720,7 +721,7 @@ int winbind_setup_common(void)
CatchSignal(SIGUSR2, sigusr2_handler); /* Debugging sigs */
CatchSignal(SIGHUP, sighup_handler);
- return 0;
+ return True;
}
@@ -857,12 +858,12 @@ static void usage(void)
setpgid( (pid_t)0, (pid_t)0);
#endif
- if (opt_dual_daemon) {
- do_dual_daemon();
+ if (!winbind_setup_common()) {
+ return 1;
}
- if (winbind_setup_common() != 0) {
- return 1;
+ if (opt_dual_daemon) {
+ do_dual_daemon();
}
/* Initialise messaging system */
diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c
index e3f00149f7..a14ed96c67 100644
--- a/source3/nsswitch/winbindd_util.c
+++ b/source3/nsswitch/winbindd_util.c
@@ -378,10 +378,16 @@ void free_getent_state(struct getent_state *state)
}
}
-/* Initialise trusted domain info */
+/* Parse winbindd related parameters */
BOOL winbindd_param_init(void)
{
+ if (lp_security() != SEC_DOMAIN && lp_security() != SEC_ADS) {
+ DEBUG(0, ("must be in security = domain or security = ads mode to run winbindd\n"));
+ return False;
+ }
+
+
/* Parse winbind uid and winbind_gid parameters */
if (!lp_winbind_uid(&server_state.uid_low, &server_state.uid_high)) {