lib/util_tdb: factor out tdb_data_talloc_copy()
authorGregor Beck <gbeck@sernet.de>
Thu, 10 Jan 2013 10:09:09 +0000 (11:09 +0100)
committerMichael Adam <obnox@samba.org>
Tue, 19 Feb 2013 11:10:24 +0000 (12:10 +0100)
Signed-off-by: Gregor Beck <gbeck@sernet.de>
Reviewed-by: Michael Adam <obnox@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/util/util_tdb.c
lib/util/util_tdb.h
source3/utils/net_idmap_check.c

index c005c827919b77cc59edf781cc8fe92cd92620b0..93df958f1ae360ba6dd55b53b8adb930fa036faf 100644 (file)
@@ -63,6 +63,21 @@ TDB_DATA string_term_tdb_data(const char *string)
        return make_tdb_data((const uint8_t *)string, string ? strlen(string) + 1 : 0);
 }
 
+TDB_DATA tdb_data_talloc_copy(TALLOC_CTX* mem_ctx, TDB_DATA data) {
+       TDB_DATA ret = {
+               .dptr  = (uint8_t *)talloc_size(mem_ctx, data.dsize+1),
+               .dsize = data.dsize
+       };
+       if (ret.dptr == NULL) {
+               ret.dsize = 0;
+       } else {
+               memcpy(ret.dptr, data.dptr, data.dsize);
+               ret.dptr[ret.dsize] = '\0';
+       }
+       return ret;
+}
+
+
 /****************************************************************************
  Lock a chain by string. Return non-zero if lock failed.
 ****************************************************************************/
index d8a23330353127dd462e314cbad3385cabe79c3b..630bdf669bef2b0fcd3c8a16b1903181d0eaf584 100644 (file)
@@ -30,6 +30,7 @@ bool tdb_data_equal(TDB_DATA t1, TDB_DATA t2);
 bool tdb_data_is_empty(TDB_DATA d);
 TDB_DATA string_tdb_data(const char *string);
 TDB_DATA string_term_tdb_data(const char *string);
+TDB_DATA tdb_data_talloc_copy(TALLOC_CTX* mem_ctx, TDB_DATA data);
 
 /****************************************************************************
  Lock a chain by string. Return non-zero if lock failed.
index 4174238298dd2883d4c1168cce7fc494c637b3cf..e75c8906de18a10a0ebe069b3207f61929ec2c8f 100644 (file)
@@ -42,7 +42,6 @@ static int traverse_check(struct db_record *rec, void* data);
 /* TDB_DATA *******************************************************************/
 static char*    print_data(TALLOC_CTX* mem_ctx, TDB_DATA d);
 static TDB_DATA parse_data(TALLOC_CTX* mem_ctx, const char** ptr);
-static TDB_DATA talloc_copy(TALLOC_CTX* mem_ctx, TDB_DATA data);
 
 /* record *********************************************************************/
 
@@ -325,7 +324,7 @@ static int add_record(struct check_ctx* ctx, TDB_DATA key, TDB_DATA value)
                diff = unpack_diff(recvalue);
                talloc_free(diff.nval.dptr);
        }
-       diff.nval = talloc_copy(ctx->diff, value);
+       diff.nval = tdb_data_talloc_copy(ctx->diff, value);
 
        DEBUG_DIFF(2, mem, "TDB DIFF", key, diff.oval, diff.nval);
 
@@ -355,7 +354,7 @@ fetch_record(struct check_ctx* ctx, TALLOC_CTX* mem_ctx, TDB_DATA key)
 
        if (NT_STATUS_IS_OK(status)) {
                TDB_DATA_diff diff = unpack_diff(tmp);
-               TDB_DATA ret = talloc_copy(mem_ctx, diff.nval);
+               TDB_DATA ret = tdb_data_talloc_copy(mem_ctx, diff.nval);
                talloc_free(tmp.dptr);
                return ret;
        }
@@ -548,20 +547,6 @@ void adjust_hwm(struct check_ctx* ctx, const struct record* r) {
        }
 }
 
-TDB_DATA talloc_copy(TALLOC_CTX* mem_ctx, TDB_DATA data) {
-       TDB_DATA ret = {
-               .dptr  = (uint8_t *)talloc_size(mem_ctx, data.dsize+1),
-               .dsize = data.dsize
-       };
-       if (ret.dptr == NULL) {
-               ret.dsize = 0;
-       } else {
-               memcpy(ret.dptr, data.dptr, data.dsize);
-               ret.dptr[ret.dsize] = '\0';
-       }
-       return ret;
-}
-
 static bool is_cstr(TDB_DATA str) {
        return !tdb_data_is_empty(str) && str.dptr[str.dsize-1] == '\0';
 }
@@ -603,8 +588,8 @@ parse_record(TALLOC_CTX* mem_ctx, TDB_DATA key, TDB_DATA val)
                DEBUG(0, ("Out of memory.\n"));
                return NULL;
        }
-       ret->key = talloc_copy(ret, key);
-       ret->val = talloc_copy(ret, val);
+       ret->key = tdb_data_talloc_copy(ret, key);
+       ret->val = tdb_data_talloc_copy(ret, val);
        if ((ret->key.dptr == NULL && key.dptr != NULL) ||
            (ret->val.dptr == NULL && val.dptr != NULL))
        {