r19428: moved tdbutil.c from lib/tdb/common/ to lib/util/util_tdb.c
[samba.git] / source4 / lib / samba3 / group.c
index cf76bddffe3b8be5406b0753e0ecf46116d13f8c..44d8775e428c26a24781b2b426ac2b60f7290d31 100644 (file)
  */
 
 #include "includes.h"
-#include "system/iconv.h"
 #include "lib/samba3/samba3.h"
-#include "lib/tdb/include/tdbutil.h"
+#include "lib/tdb/include/tdb.h"
+#include "lib/util/util_tdb.h"
 #include "system/filesys.h"
+#include "libcli/security/security.h"
 
 #define DATABASE_VERSION_V1 1 /* native byte format. */
 #define DATABASE_VERSION_V2 2 /* le format. */
@@ -72,10 +73,11 @@ NTSTATUS samba3_read_grouptdb(const char *file, TALLOC_CTX *ctx, struct samba3_g
 
        for (kbuf = tdb_firstkey(tdb); 
             kbuf.dptr; 
-            newkey = tdb_nextkey(tdb, kbuf), safe_free(kbuf.dptr), kbuf=newkey) {
+            newkey = tdb_nextkey(tdb, kbuf), free(kbuf.dptr), kbuf=newkey) {
                struct samba3_groupmapping map;
+               const char *k = (const char *)kbuf.dptr;
 
-               if (strncmp(kbuf.dptr, GROUP_PREFIX, strlen(GROUP_PREFIX)) == 0)
+               if (strncmp(k, GROUP_PREFIX, strlen(GROUP_PREFIX)) == 0)
                {
                        dbuf = tdb_fetch(tdb, kbuf);
                        if (!dbuf.dptr)
@@ -83,9 +85,9 @@ NTSTATUS samba3_read_grouptdb(const char *file, TALLOC_CTX *ctx, struct samba3_g
 
                        ZERO_STRUCT(map);
 
-                       map.sid = dom_sid_parse_talloc(ctx, kbuf.dptr+strlen(GROUP_PREFIX));
+                       map.sid = dom_sid_parse_talloc(ctx, k+strlen(GROUP_PREFIX));
 
-                       ret = tdb_unpack(tdb, dbuf.dptr, dbuf.dsize, "dd",
+                       ret = tdb_unpack(tdb, (char *)dbuf.dptr, dbuf.dsize, "dd",
                                                         &map.gid, &map.sid_name_use);
                        
                        if ( ret == -1 ) {
@@ -93,8 +95,8 @@ NTSTATUS samba3_read_grouptdb(const char *file, TALLOC_CTX *ctx, struct samba3_g
                                continue;
                        }
 
-                       map.nt_name = talloc_strdup(ctx, dbuf.dptr+ret);
-                       map.comment = talloc_strdup(ctx, dbuf.dptr+ret+strlen(map.nt_name));
+                       map.nt_name = talloc_strdup(ctx, (const char *)(dbuf.dptr+ret));
+                       map.comment = talloc_strdup(ctx, (const char *)(dbuf.dptr+ret+strlen(map.nt_name)));
 
                        db->groupmappings = talloc_realloc(ctx, db->groupmappings, struct samba3_groupmapping, db->groupmap_count+1);
 
@@ -104,7 +106,7 @@ NTSTATUS samba3_read_grouptdb(const char *file, TALLOC_CTX *ctx, struct samba3_g
                        db->groupmappings[db->groupmap_count] = map;
 
                        db->groupmap_count++;
-               } else if (strncmp(kbuf.dptr, MEMBEROF_PREFIX, strlen(MEMBEROF_PREFIX)) == 0)
+               } else if (strncmp(k, MEMBEROF_PREFIX, strlen(MEMBEROF_PREFIX)) == 0)
                {
                        struct samba3_alias alias;
                        const char **member_strlist;
@@ -114,11 +116,11 @@ NTSTATUS samba3_read_grouptdb(const char *file, TALLOC_CTX *ctx, struct samba3_g
                        if (!dbuf.dptr)
                                continue;
 
-                       alias.sid = dom_sid_parse_talloc(ctx, kbuf.dptr+strlen(MEMBEROF_PREFIX));
+                       alias.sid = dom_sid_parse_talloc(ctx, k+strlen(MEMBEROF_PREFIX));
                        alias.member_count = 0;
                        alias.members = NULL;
 
-                       member_strlist = str_list_make_shell(ctx, dbuf.dptr, " ");
+                       member_strlist = str_list_make_shell(ctx, (const char *)dbuf.dptr, " ");
 
                        for (i = 0; member_strlist[i]; i++) {
                                alias.members = talloc_realloc(ctx, alias.members, struct dom_sid *, alias.member_count+1);