Add casts to uint32_t to match prototype for sid_append_rid().
[ira/wip.git] / source3 / passdb / util_unixsids.c
index ee8cf2d8f0275e62b295da9e0dc5244ed698adc2..1b674d02a2d1aa9d35bdae0a889cb9a02e611496 100644 (file)
@@ -5,7 +5,7 @@
       
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
 
-BOOL sid_check_is_unix_users(const DOM_SID *sid)
+bool sid_check_is_unix_users(const DOM_SID *sid)
 {
        return sid_equal(sid, &global_sid_Unix_Users);
 }
 
-BOOL sid_check_is_in_unix_users(const DOM_SID *sid)
+bool sid_check_is_in_unix_users(const DOM_SID *sid)
 {
        DOM_SID dom_sid;
        uint32 rid;
@@ -36,12 +35,24 @@ BOOL sid_check_is_in_unix_users(const DOM_SID *sid)
        return sid_check_is_unix_users(&dom_sid);
 }
 
+bool uid_to_unix_users_sid(uid_t uid, DOM_SID *sid)
+{
+       sid_copy(sid, &global_sid_Unix_Users);
+       return sid_append_rid(sid, (uint32_t)uid);
+}
+
+bool gid_to_unix_groups_sid(gid_t gid, DOM_SID *sid)
+{
+       sid_copy(sid, &global_sid_Unix_Groups);
+       return sid_append_rid(sid, (uint32_t)gid);
+}
+
 const char *unix_users_domain_name(void)
 {
        return "Unix User";
 }
 
-BOOL lookup_unix_user_name(const char *name, DOM_SID *sid)
+bool lookup_unix_user_name(const char *name, DOM_SID *sid)
 {
        struct passwd *pwd;
 
@@ -51,18 +62,18 @@ BOOL lookup_unix_user_name(const char *name, DOM_SID *sid)
        }
 
        sid_copy(sid, &global_sid_Unix_Users);
-       sid_append_rid(sid, pwd->pw_uid); /* For 64-bit uid's we have enough
+       sid_append_rid(sid, (uint32_t)pwd->pw_uid); /* For 64-bit uid's we have enough
                                          * space ... */
-       talloc_free(pwd);
+       TALLOC_FREE(pwd);
        return True;
 }
 
-BOOL sid_check_is_unix_groups(const DOM_SID *sid)
+bool sid_check_is_unix_groups(const DOM_SID *sid)
 {
        return sid_equal(sid, &global_sid_Unix_Groups);
 }
 
-BOOL sid_check_is_in_unix_groups(const DOM_SID *sid)
+bool sid_check_is_in_unix_groups(const DOM_SID *sid)
 {
        DOM_SID dom_sid;
        uint32 rid;
@@ -78,17 +89,17 @@ const char *unix_groups_domain_name(void)
        return "Unix Group";
 }
 
-BOOL lookup_unix_group_name(const char *name, DOM_SID *sid)
+bool lookup_unix_group_name(const char *name, DOM_SID *sid)
 {
        struct group *grp;
 
-       grp = getgrnam(name);
+       grp = sys_getgrnam(name);
        if (grp == NULL) {
                return False;
        }
 
        sid_copy(sid, &global_sid_Unix_Groups);
-       sid_append_rid(sid, grp->gr_gid); /* For 64-bit uid's we have enough
+       sid_append_rid(sid, (uint32_t)grp->gr_gid); /* For 64-bit uid's we have enough
                                           * space ... */
        return True;
 }