From 1d8cd8faf620cb068d740d8fad7968525d45e83a Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Mon, 30 Jun 2003 16:18:29 +0000 Subject: fix for platforms that don't have unsetenv(). we now have to check the value for _NO_WINBINDD. "1" enables, and != "1" disables (use "0" by convention). (This used to be commit 11eccaef1dc61d80a7db8d0fb4bc5a47d71a4390) --- source3/lib/system_smbd.c | 4 ++-- source3/nsswitch/wb_common.c | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'source3') diff --git a/source3/lib/system_smbd.c b/source3/lib/system_smbd.c index ca78031660..3498307acb 100644 --- a/source3/lib/system_smbd.c +++ b/source3/lib/system_smbd.c @@ -114,7 +114,7 @@ int sys_getgrouplist(const char *user, gid_t gid, gid_t *groups, int *grpcnt) /* see if we should disable winbindd lookups for local users */ if ( (p = strchr(user, *lp_winbind_separator())) == NULL ) { - if ( setenv(WINBINDD_DONT_ENV, "1", True) == -1 ) + if ( setenv(WINBINDD_DONT_ENV, "1", 1) == -1 ) DEBUG(0,("sys_getgroup_list: Insufficient environment space for %s\n", WINBINDD_DONT_ENV)); else @@ -131,7 +131,7 @@ int sys_getgrouplist(const char *user, gid_t gid, gid_t *groups, int *grpcnt) #endif /* allow winbindd lookups */ - unsetenv( WINBINDD_DONT_ENV ); + setenv( WINBINDD_DONT_ENV, "0", 1); return retval; } diff --git a/source3/nsswitch/wb_common.c b/source3/nsswitch/wb_common.c index ac1ccb217e..adcfdaa9d8 100644 --- a/source3/nsswitch/wb_common.c +++ b/source3/nsswitch/wb_common.c @@ -395,11 +395,15 @@ int read_reply(struct winbindd_response *response) NSS_STATUS winbindd_send_request(int req_type, struct winbindd_request *request) { struct winbindd_request lrequest; - + char *env; + int value; + /* Check for our tricky environment variable */ - if (getenv(WINBINDD_DONT_ENV)) { - return NSS_STATUS_NOTFOUND; + if ( (env = getenv(WINBINDD_DONT_ENV)) != NULL ) { + value = atoi(env); + if ( value == 1 ) + return NSS_STATUS_NOTFOUND; } if (!request) { -- cgit