diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/lib/data_blob.c | 2 | ||||
-rw-r--r-- | source4/lib/tdb/common/tdb.c | 11 |
2 files changed, 5 insertions, 8 deletions
diff --git a/source4/lib/data_blob.c b/source4/lib/data_blob.c index 284db4518f..2ec21717b1 100644 --- a/source4/lib/data_blob.c +++ b/source4/lib/data_blob.c @@ -29,7 +29,7 @@ DATA_BLOB data_blob_named(const void *p, size_t length, const char *name) { DATA_BLOB ret; - if (length == 0) { + if (p == NULL && length == 0) { ZERO_STRUCT(ret); return ret; } diff --git a/source4/lib/tdb/common/tdb.c b/source4/lib/tdb/common/tdb.c index 6554ec5697..670fdda7cd 100644 --- a/source4/lib/tdb/common/tdb.c +++ b/source4/lib/tdb/common/tdb.c @@ -1129,8 +1129,8 @@ static int tdb_update_hash(TDB_CONTEXT *tdb, TDB_DATA key, u32 hash, TDB_DATA db /* find an entry in the database given a key */ /* If an entry doesn't exist tdb_err will be set to * TDB_ERR_NOEXIST. If a key has no data attached - * tdb_err will not be set. Both will return a - * zero pptr and zero dsize. + * then the TDB_DATA will have zero length but + * a non-zero pointer */ TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key) @@ -1145,11 +1145,8 @@ TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key) if (!(rec_ptr = tdb_find_lock_hash(tdb,key,hash,F_RDLCK,&rec))) return tdb_null; - 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.dptr = tdb_alloc_read(tdb, rec_ptr + sizeof(rec) + rec.key_len, + rec.data_len); ret.dsize = rec.data_len; tdb_unlock(tdb, BUCKET(rec.full_hash), F_RDLCK); return ret; |