diff options
author | Tim Potter <tpot@samba.org> | 2003-11-02 16:22:28 +0000 |
---|---|---|
committer | Tim Potter <tpot@samba.org> | 2003-11-02 16:22:28 +0000 |
commit | 1f05df2b36d0782129e8cc4cfb23099ffb1cd775 (patch) | |
tree | f6b6c80dcdb0adc510bdcffb56cf088591e11d5b | |
parent | 31e6157dfd2457252029f55616cafb0494aa4da0 (diff) | |
download | samba-1f05df2b36d0782129e8cc4cfb23099ffb1cd775.tar.gz samba-1f05df2b36d0782129e8cc4cfb23099ffb1cd775.tar.bz2 samba-1f05df2b36d0782129e8cc4cfb23099ffb1cd775.zip |
Use putenv() instead of setenv() in the winbind_{off,on}() functions. Some
platforms don't have setenv().
(This used to be commit a8b487c4cb5d181e59755f49063512b2729bccb5)
-rw-r--r-- | source3/nsswitch/wb_common.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/source3/nsswitch/wb_common.c b/source3/nsswitch/wb_common.c index f146391653..793d4a30b8 100644 --- a/source3/nsswitch/wb_common.c +++ b/source3/nsswitch/wb_common.c @@ -472,17 +472,44 @@ NSS_STATUS winbindd_request(int req_type, } /************************************************************************* - A couple of simple jfunctions to disable winbindd lookups and re- + A couple of simple functions to disable winbindd lookups and re- enable them ************************************************************************/ +/* Use putenv() instead of setenv() as not all environments have the + latter. */ + +static int set_winbind_dont_env(char value) +{ + int len = strlen(WINBINDD_DONT_ENV) + 3; /* len("_NO_WINBINDD=1\0") */ + char *s = malloc(len); + int result; + + if (s == NULL) + return -1; + + /* It's OK to use strcpy here as we have allocated the correct + buffer size and no user or network data is used. */ + + strcpy(s, WINBINDD_DONT_ENV); + + s[strlen(WINBINDD_DONT_ENV)] = '='; + s[strlen(WINBINDD_DONT_ENV) + 1] = value; + s[strlen(WINBINDD_DONT_ENV) + 2] = '\0'; + + result = putenv(s); + + free(s); + return result; +} + BOOL winbind_off( void ) { - return (setenv( WINBINDD_DONT_ENV, "1", 1 ) != -1); + return set_winbind_dont_env('1') != -1; } BOOL winbind_on( void ) { - return (setenv( WINBINDD_DONT_ENV, "0", 1 ) != -1); + return set_winbind_dont_env('0') != -1; } |