s3-group-mapping: Remove fstrings from GROUP_MAP.
[samba.git] / source3 / passdb / passdb.c
index 62dcb5deddd582a417a35ff40bdc8a96a7dd0788..276e0314c84295ab636d9ac9104af5f09f8fdd1e 100644 (file)
@@ -591,7 +591,7 @@ bool algorithmic_pdb_rid_is_user(uint32_t rid)
 bool lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
                            enum lsa_SidType *type)
 {
-       GROUP_MAP map;
+       GROUP_MAP *map;
        bool ret;
 
        /* Windows treats "MACHINE\None" as a special name for 
@@ -645,24 +645,32 @@ bool lookup_global_sam_name(const char *name, int flags, uint32_t *rid,
         * Maybe it is a group ?
         */
 
+       map = talloc_zero(NULL, GROUP_MAP);
+       if (!map) {
+               return false;
+       }
+
        become_root();
-       ret = pdb_getgrnam(&map, name);
+       ret = pdb_getgrnam(map, name);
        unbecome_root();
 
        if (!ret) {
+               TALLOC_FREE(map);
                return False;
        }
 
        /* BUILTIN groups are looked up elsewhere */
-       if (!sid_check_is_in_our_domain(&map.sid)) {
+       if (!sid_check_is_in_our_domain(&map->sid)) {
                DEBUG(10, ("Found group %s (%s) not in our domain -- "
-                          "ignoring.", name, sid_string_dbg(&map.sid)));
+                          "ignoring.", name, sid_string_dbg(&map->sid)));
+               TALLOC_FREE(map);
                return False;
        }
 
        /* yes it's a mapped group */
-       sid_peek_rid(&map.sid, rid);
-       *type = map.sid_name_use;
+       sid_peek_rid(&map->sid, rid);
+       *type = map->sid_name_use;
+       TALLOC_FREE(map);
        return True;
 }