dbwrap: Use tdb_storev in dbwrap_ctdb
authorVolker Lendecke <vl@samba.org>
Wed, 10 Aug 2016 19:12:06 +0000 (21:12 +0200)
committerRalph Boehme <slow@samba.org>
Mon, 29 Aug 2016 17:03:27 +0000 (19:03 +0200)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/lib/dbwrap/dbwrap_ctdb.c

index 10f5f50adf7bc21ced63dc6c7533be62810e4168..34aad4599e6b02314dcc2ec8ec966d7ec3b067b0 100644 (file)
@@ -128,22 +128,14 @@ static NTSTATUS db_ctdb_ltdb_store(struct db_ctdb_ctx *db,
                                   struct ctdb_ltdb_header *header,
                                   TDB_DATA data)
 {
-       TDB_DATA rec;
+       TDB_DATA recs[2];
        int ret;
 
-       rec.dsize = data.dsize + sizeof(struct ctdb_ltdb_header);
-       rec.dptr = (uint8_t *)talloc_size(talloc_tos(), rec.dsize);
-
-       if (rec.dptr == NULL) {
-               return NT_STATUS_NO_MEMORY;
-       }
-
-       memcpy(rec.dptr, header, sizeof(struct ctdb_ltdb_header));
-       memcpy(sizeof(struct ctdb_ltdb_header) + (uint8_t *)rec.dptr, data.dptr, data.dsize);
-
-       ret = tdb_store(db->wtdb->tdb, key, rec, TDB_REPLACE);
+       recs[0] = (TDB_DATA) { .dptr = (uint8_t *)header,
+                              .dsize = sizeof(struct ctdb_ltdb_header) };
+       recs[1] = data;
 
-       talloc_free(rec.dptr);
+       ret = tdb_storev(db->wtdb->tdb, key, recs, 2, TDB_REPLACE);
 
        return (ret == 0) ? NT_STATUS_OK
                          : tdb_error_to_ntstatus(db->wtdb->tdb);