diff options
author | Jeremy Allison <jra@samba.org> | 2003-09-18 21:19:43 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-09-18 21:19:43 +0000 |
commit | 8e0a88b7e2f84175860225363ff17584e6e1ddd4 (patch) | |
tree | 3d467e21ddab279a2706805863c10e939ae57b4e /source3 | |
parent | f4525f46ce0e807f11ad3eaeee10fb57bdd175bf (diff) | |
download | samba-8e0a88b7e2f84175860225363ff17584e6e1ddd4.tar.gz samba-8e0a88b7e2f84175860225363ff17584e6e1ddd4.tar.bz2 samba-8e0a88b7e2f84175860225363ff17584e6e1ddd4.zip |
Oops. Proper fix for #470.
Jeremy.
(This used to be commit e121a2ec0c243477ea318d573166f342abbd1cce)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/passdb/passdb.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index 743ea823bf..78f36eb9b6 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -1061,6 +1061,24 @@ BOOL local_password_change(const char *user_name, int local_flags, } /**************************************************************************** + Convert a uid to SID - algorithmic. +****************************************************************************/ + +static DOM_SID *algorithmic_uid_to_sid(DOM_SID *psid, uid_t uid) +{ + if ( !lp_enable_rid_algorithm() ) + return NULL; + + DEBUG(8,("algorithmic_uid_to_sid: falling back to RID algorithm\n")); + sid_copy( psid, get_global_sam_sid() ); + sid_append_rid( psid, fallback_pdb_uid_to_user_rid(uid) ); + DEBUG(10,("algorithmic_uid_to_sid: uid (%d) -> SID %s.\n", + (unsigned int)uid, sid_string_static(psid) )); + + return psid; +} + +/**************************************************************************** Convert a uid to SID - locally. ****************************************************************************/ @@ -1074,15 +1092,7 @@ DOM_SID *local_uid_to_sid(DOM_SID *psid, uid_t uid) if ( !unix_pw ) { DEBUG(4,("local_uid_to_sid: host has no idea of uid %lu\n", (unsigned long)uid)); - - if ( !lp_enable_rid_algorithm() ) - return NULL; - - DEBUG(8,("local_uid_to_sid: falling back to RID algorithm\n")); - - sid_copy( psid, get_global_sam_sid() ); - sid_append_rid( psid, fallback_pdb_uid_to_user_rid(uid) ); - goto out; + return algorithmic_uid_to_sid( psid, uid); } if ( !NT_STATUS_IS_OK(pdb_init_sam(&sampw)) ) { @@ -1099,18 +1109,10 @@ DOM_SID *local_uid_to_sid(DOM_SID *psid, uid_t uid) else { DEBUG(4,("local_uid_to_sid: User %s [uid == %lu] has no samba account\n", unix_pw->pw_name, (unsigned long)uid)); - - if ( !lp_enable_rid_algorithm() ) - return NULL; - DEBUG(8,("local_uid_to_sid: falling back to RID algorithm\n")); - - sid_copy( psid, get_global_sam_sid() ); - sid_append_rid( psid, fallback_pdb_uid_to_user_rid(uid) ); + return algorithmic_uid_to_sid( psid, uid); } -out: - DEBUG(10,("local_uid_to_sid: uid (%d) -> SID %s (%s).\n", (unsigned int)uid, sid_string_static(psid), unix_pw->pw_name)); |