diff options
author | Gerald Carter <jerry@samba.org> | 2006-04-02 19:45:42 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:15:52 -0500 |
commit | e4998337e75c5e9debe914ff4eb2c0b0fa97c156 (patch) | |
tree | 3b1aa826088fae703ed4cf590c8bfbd4a865d492 /source3 | |
parent | 186f442f4cd4a8434c4e2d4e2c0de97b855c5586 (diff) | |
download | samba-e4998337e75c5e9debe914ff4eb2c0b0fa97c156.tar.gz samba-e4998337e75c5e9debe914ff4eb2c0b0fa97c156.tar.bz2 samba-e4998337e75c5e9debe914ff4eb2c0b0fa97c156.zip |
r14868: I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
I will not write code when changing to Daylight Savings Time.
...
Fix my brain dead inverted logic for turning winbindd on and off
when run on a DC or when calling pdb functions from within winbindd.
(This used to be commit 021b3dc2db9fb422ede4657a1f27ef7ef2d22cee)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/system_smbd.c | 16 | ||||
-rw-r--r-- | source3/nsswitch/wb_common.c | 16 | ||||
-rw-r--r-- | source3/nsswitch/winbindd.c | 2 | ||||
-rw-r--r-- | source3/passdb/pdb_interface.c | 15 |
4 files changed, 26 insertions, 23 deletions
diff --git a/source3/lib/system_smbd.c b/source3/lib/system_smbd.c index ac7a096295..afa64489cf 100644 --- a/source3/lib/system_smbd.c +++ b/source3/lib/system_smbd.c @@ -132,13 +132,7 @@ static int sys_getgrouplist(const char *user, gid_t gid, gid_t *groups, int *grp * always determined by the info3 coming back from auth3 or the * PAC. */ - if ( !winbind_putenv("0") ) { - DEBUG(0,("sys_getgroup_list: Insufficient environment space " - "for %s\n", WINBINDD_DONT_ENV)); - } else { - DEBUG(10,("sys_getgrouplist(): disabled winbindd for group " - "lookup [user == %s]\n", user)); - } + winbind_off() ; #ifdef HAVE_GETGROUPLIST retval = getgrouplist(user, gid, groups, grpcnt); @@ -148,10 +142,12 @@ static int sys_getgrouplist(const char *user, gid_t gid, gid_t *groups, int *grp unbecome_root(); #endif - /* allow winbindd lookups */ + /* allow winbindd lookups , but only if they were not already disabled */ + + if ( !(winbindd_env && strequal(winbindd_env, "1")) ) { + winbind_on(); + } - winbind_putenv( winbindd_env ? winbindd_env : "1" ); - return retval; } diff --git a/source3/nsswitch/wb_common.c b/source3/nsswitch/wb_common.c index 05f080e73a..91ec912b7d 100644 --- a/source3/nsswitch/wb_common.c +++ b/source3/nsswitch/wb_common.c @@ -618,15 +618,17 @@ NSS_STATUS winbindd_request_response(int req_type, /* Use putenv() instead of setenv() in these functions as not all environments have the latter. */ -BOOL winbind_putenv( const char *s ) +BOOL winbind_off( void ) { - fstring env; + static char *s = CONST_DISCARD(char *, WINBINDD_DONT_ENV "=1"); - if ( !s ) { - return False; - } + return putenv(s) != -1; +} - snprintf( env, sizeof(env), "%s=%s", WINBINDD_DONT_ENV, s ); +BOOL winbind_on( void ) +{ + static char *s = CONST_DISCARD(char *, WINBINDD_DONT_ENV "=0"); - return putenv(env) != -1; + return putenv(s) != -1; } + diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c index 51a7c1f6b0..ad2774eea6 100644 --- a/source3/nsswitch/winbindd.c +++ b/source3/nsswitch/winbindd.c @@ -945,7 +945,7 @@ int main(int argc, char **argv) /* Set environment variable so we don't recursively call ourselves. This may also be useful interactively. */ - if ( !winbind_putenv("0") ) { + if ( !winbind_off() ) { DEBUG(0,("Failed to disable recusive winbindd calls. Exiting.\n")); exit(1); } diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c index 88cf387838..b6e635cca1 100644 --- a/source3/passdb/pdb_interface.c +++ b/source3/passdb/pdb_interface.c @@ -1509,11 +1509,13 @@ static BOOL get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, size /* We only look at our own sam, so don't care about imported stuff */ winbindd_env = getenv(WINBINDD_DONT_ENV); - winbind_putenv("0"); + winbind_off(); if ((grp = getgrgid(gid)) == NULL) { - /* allow winbindd lookups */ - winbind_putenv( winbindd_env ? winbindd_env : "1" ); + /* allow winbindd lookups, but only if they weren't already disabled */ + if ( !(winbindd_env && strequal(winbindd_env, "1")) ) { + winbind_on(); + } return False; } @@ -1539,8 +1541,11 @@ static BOOL get_memberuids(TALLOC_CTX *mem_ctx, gid_t gid, uid_t **pp_uids, size add_uid_to_array_unique(mem_ctx, pw->pw_uid, pp_uids, p_num); } - /* allow winbindd lookups */ - winbind_putenv( winbindd_env ? winbindd_env : "1" ); + /* allow winbindd lookups, but only if they weren't already disabled */ + + if ( !(winbindd_env && strequal(winbindd_env, "1")) ) { + winbind_on(); + } return True; } |