From e26d09685cf4aff2256adccf9b576d48fe52cc89 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 2 Oct 2000 19:28:26 +0000 Subject: Added debug so if zero length messages get sent we successfully remove them (this can happen if smbd processes are shut down at the wrong time). Jeremy. (This used to be commit c1de97f96b8c5ad8e5f01a0d17c6387733769442) --- source3/tdb/tdb.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'source3/tdb') diff --git a/source3/tdb/tdb.c b/source3/tdb/tdb.c index c653c79d68..d9401d95d4 100644 --- a/source3/tdb/tdb.c +++ b/source3/tdb/tdb.c @@ -696,9 +696,12 @@ TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key) rec_ptr = tdb_find(tdb, key, hash, &rec); if (rec_ptr) { - ret.dptr = tdb_alloc_read(tdb, - rec_ptr + sizeof(rec) + rec.key_len, + if (rec.data_len) + ret.dptr = tdb_alloc_read(tdb, + rec_ptr + sizeof(rec) + rec.key_len, rec.data_len); + else + ret.dptr = NULL; ret.dsize = rec.data_len; } @@ -1106,7 +1109,8 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag) memcpy(p, &rec, sizeof(rec)); memcpy(p+sizeof(rec), key.dptr, key.dsize); - memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize); + if (dbuf.dsize) + memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize); if (tdb_write(tdb, rec_ptr, p, sizeof(rec)+key.dsize+dbuf.dsize) == -1) goto fail; -- cgit