diff options
-rw-r--r-- | source3/lib/system_smbd.c | 4 | ||||
-rw-r--r-- | source3/nsswitch/wb_common.c | 10 |
2 files changed, 9 insertions, 5 deletions
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) { |