diff options
author | Simo Sorce <idra@samba.org> | 2001-07-24 20:02:48 +0000 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2001-07-24 20:02:48 +0000 |
commit | 1cbae7315f99835ee294ce96858f73b5f8a18cfe (patch) | |
tree | d1c791f20d4e2b3246b3f53ed5dcc02956b3080d /source3/smbd/password.c | |
parent | 78dfa74852896dcc18513c1ba9a0dcaaf0c2a146 (diff) | |
download | samba-1cbae7315f99835ee294ce96858f73b5f8a18cfe.tar.gz samba-1cbae7315f99835ee294ce96858f73b5f8a18cfe.tar.bz2 samba-1cbae7315f99835ee294ce96858f73b5f8a18cfe.zip |
Convert other parameters (read list, write list, valid users...) to the P_LIST format.
changed functions to use list instead of strings
addedd lp_list_substitute function
(This used to be commit 7257d07563ba21bd88733d5d2b4ec4829fab2507)
Diffstat (limited to 'source3/smbd/password.c')
-rw-r--r-- | source3/smbd/password.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/source3/smbd/password.c b/source3/smbd/password.c index fb9c39bde4..bc05d5f500 100644 --- a/source3/smbd/password.c +++ b/source3/smbd/password.c @@ -648,25 +648,34 @@ check if a username is valid ****************************************************************************/ BOOL user_ok(char *user,int snum) { - pstring valid, invalid; + char **valid, **invalid; BOOL ret; - StrnCpy(valid, lp_valid_users(snum), sizeof(pstring)-1); - StrnCpy(invalid, lp_invalid_users(snum), sizeof(pstring)-1); + valid = invalid = NULL; + ret = True; - pstring_sub(valid,"%S",lp_servicename(snum)); - pstring_sub(invalid,"%S",lp_servicename(snum)); - - ret = !user_in_list(user,invalid); - - if (ret && valid && *valid) { - ret = user_in_list(user,valid); + if (lp_invalid_users(snum)) { + lp_list_copy(&invalid, lp_invalid_users(snum)); + if (invalid && lp_list_substitute(invalid, "%S", lp_servicename(snum))) { + ret = !user_in_list(user, invalid); + } } + if (invalid) lp_list_free (&invalid); + + if (ret && lp_valid_users(snum)) { + lp_list_copy(&valid, lp_valid_users(snum)); + if (valid && lp_list_substitute(valid, "%S", lp_servicename(snum))) { + ret = user_in_list(user,valid); + } + } + if (valid) lp_list_free (&valid); if (ret && lp_onlyuser(snum)) { - char *user_list = lp_username(snum); - pstring_sub(user_list,"%S",lp_servicename(snum)); - ret = user_in_list(user,user_list); + char **user_list = lp_list_make (lp_username(snum)); + if (user_list && lp_list_substitute(user_list, "%S", lp_servicename(snum))) { + ret = user_in_list(user, user_list); + } + if (user_list) lp_list_free (&user_list); } return(ret); |