r505: Break out algorithmic_gid_to_sid so that those of us who need it can use it.
authorRichard Sharpe <sharpe@samba.org>
Thu, 6 May 2004 05:31:52 +0000 (05:31 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:51:26 +0000 (10:51 -0500)
(This used to be commit 5d7ee320cca80558a4b71295ef8b7de02f21554a)

source3/passdb/passdb.c

index 9c8185670ffaa1f851ca3b7909b92700d35d0236..8313a259bd2b9b53ed7db04fa8dd0eb82c2760b7 100644 (file)
@@ -1176,6 +1176,24 @@ BOOL local_sid_to_uid(uid_t *puid, const DOM_SID *psid, enum SID_NAME_USE *name_
        return True;
 }
 
+/****************************************************************************
+ Convert a gid to SID - algorithmic.
+****************************************************************************/
+
+DOM_SID *algorithmic_gid_to_sid(DOM_SID *psid, uid_t gid)
+{
+       if ( !lp_enable_rid_algorithm() )
+               return NULL;
+
+       DEBUG(8,("algorithmic_gid_to_sid: falling back to RID algorithm\n"));
+       sid_copy( psid, get_global_sam_sid() );
+       sid_append_rid( psid, pdb_gid_to_group_rid(gid) );
+       DEBUG(10,("algorithmic_gid_to_sid:  gid (%d) -> SID %s.\n",
+               (unsigned int)gid, sid_string_static(psid) ));
+
+       return psid;
+}
+
 /****************************************************************************
  Convert a gid to SID - locally.
 ****************************************************************************/
@@ -1199,13 +1217,11 @@ DOM_SID *local_gid_to_sid(DOM_SID *psid, gid_t gid)
                /* fallback to rid mapping if enabled */
 
                if ( lp_enable_rid_algorithm() ) {
-                       sid_copy(psid, get_global_sam_sid());
-                       sid_append_rid(psid, pdb_gid_to_group_rid(gid));
 
                        DEBUG(10,("local_gid_to_sid: Fall back to algorithmic mapping: %u -> %s\n", 
                                (unsigned int)gid, sid_string_static(psid)));
                                
-                       return psid;
+                       return algorithmic_gid_to_sid(psid, gid);
                }
                else
                        return NULL;