s3:fix endianness bug in dbwrap_change_uint32_atomic() (bug #6901)
authorMichael Adam <obnox@samba.org>
Fri, 20 Nov 2009 23:08:38 +0000 (00:08 +0100)
committerKarolin Seeger <kseeger@samba.org>
Thu, 26 Nov 2009 10:41:04 +0000 (11:41 +0100)
Michael
(cherry picked from commit caa2ee448efd1ebd6d2078972ed838613e7b5151)

source3/lib/dbwrap_util.c

index 1c190167b5ba64fc40a176db77b73166f81e57d1..96888a4fb0bd20f01782255c5fd5124aa2cb9f52 100644 (file)
@@ -118,7 +118,7 @@ static NTSTATUS dbwrap_change_uint32_atomic_action(struct db_context *db,
 {
        struct db_record *rec;
        uint32 val = -1;
-       TDB_DATA data;
+       uint32_t v_store;
        NTSTATUS ret;
        struct dbwrap_change_uint32_atomic_context *state;
 
@@ -141,10 +141,12 @@ static NTSTATUS dbwrap_change_uint32_atomic_action(struct db_context *db,
 
        val += state->change_val;
 
-       data.dsize = sizeof(val);
-       data.dptr = (uint8 *)&val;
+       SIVAL(&v_store, 0, val);
 
-       ret = rec->store(rec, data, TDB_REPLACE);
+       ret = rec->store(rec,
+                        make_tdb_data((const uint8 *)&v_store,
+                                      sizeof(v_store)),
+                        TDB_REPLACE);
 
 done:
        TALLOC_FREE(rec);