diff options
Diffstat (limited to 'source3/tdb')
-rw-r--r-- | source3/tdb/tdb.c | 3 | ||||
-rw-r--r-- | source3/tdb/tdbutil.c | 19 |
2 files changed, 10 insertions, 12 deletions
diff --git a/source3/tdb/tdb.c b/source3/tdb/tdb.c index c57d23cb6f..2a6dca16a8 100644 --- a/source3/tdb/tdb.c +++ b/source3/tdb/tdb.c @@ -1442,7 +1442,8 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag) } memcpy(p, key.dptr, key.dsize); - memcpy(p+key.dsize, dbuf.dptr, dbuf.dsize); + if (dbuf.dsize) + memcpy(p+key.dsize, dbuf.dptr, dbuf.dsize); /* now we're into insert / modify / replace of a record which * we know could not be optimised by an in-place store (for diff --git a/source3/tdb/tdbutil.c b/source3/tdb/tdbutil.c index e7650033b8..ad97f45044 100644 --- a/source3/tdb/tdbutil.c +++ b/source3/tdb/tdbutil.c @@ -218,17 +218,14 @@ BOOL tdb_store_uint32(TDB_CONTEXT *tdb, char *keystr, uint32 value) on failure. ****************************************************************************/ -int tdb_store_by_string(TDB_CONTEXT *tdb, char *keystr, void *buffer, int len) +int tdb_store_by_string(TDB_CONTEXT *tdb, char *keystr, TDB_DATA data, int flags) { - TDB_DATA key, data; + TDB_DATA key; key.dptr = keystr; key.dsize = strlen(keystr) + 1; - data.dptr = buffer; - data.dsize = len; - - return tdb_store(tdb, key, data, TDB_REPLACE); + return tdb_store(tdb, key, data, flags); } /**************************************************************************** @@ -247,17 +244,17 @@ TDB_DATA tdb_fetch_by_string(TDB_CONTEXT *tdb, char *keystr) } /**************************************************************************** - Delete a buffer using a null terminated string key. + Delete an entry using a null terminated string key. ****************************************************************************/ int tdb_delete_by_string(TDB_CONTEXT *tdb, char *keystr) { - TDB_DATA key; + TDB_DATA key; - key.dptr = keystr; - key.dsize = strlen(keystr) + 1; + key.dptr = keystr; + key.dsize = strlen(keystr) + 1; - return tdb_delete(tdb, key); + return tdb_delete(tdb, key); } /**************************************************************************** |