diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-04-30 09:04:14 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2005-04-30 09:04:14 +0000 |
commit | 469ec5bacf4c88a5ab43f2f49d9c882675a1e03e (patch) | |
tree | 2110057a8b08b66fd1d5072189d47eeb994f9f48 /source/lib/data_blob.c | |
parent | dd2a755d6e1a11b90d2a73f1ea25f66a7afa032d (diff) | |
download | samba-469ec5bacf4c88a5ab43f2f49d9c882675a1e03e.tar.gz samba-469ec5bacf4c88a5ab43f2f49d9c882675a1e03e.tar.xz samba-469ec5bacf4c88a5ab43f2f49d9c882675a1e03e.zip |
r6528: - in tdb_fetch() we effectively disallowed zero length records by
returning NULL/0, which is the same as we used for a failure. Having
to look at tdb->ecode (which we never do) is too error prone.
Instead, tdb_fetch() should behave like malloc() and talloc(), where
zero length is not special and malloc(0) returns a valid pointer.
- similarly in data_blob(), asking for data_blob(NULL, 0) should
return a zero blob, but asking for data_blob(ptr, 0) should return a
zero length blob with a valid pointer, just like talloc() and malloc()
This change fixes the SummaryInformation stream stored in the tdb
backend when manipulated from w2k. The w2k client was using
SET_EOF_INFORMATION to create a zero-length stream, which we return
STATUS_NOT_FOUND on, as the tdb_fetch() gave us back a NULL/0 blob,
which we returned as not-found
Diffstat (limited to 'source/lib/data_blob.c')
-rw-r--r-- | source/lib/data_blob.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/source/lib/data_blob.c b/source/lib/data_blob.c index 284db4518f1..2ec21717b13 100644 --- a/source/lib/data_blob.c +++ b/source/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; } |