summaryrefslogtreecommitdiff
path: root/source3/lib/xattr_tdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/xattr_tdb.c')
-rw-r--r--source3/lib/xattr_tdb.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/source3/lib/xattr_tdb.c b/source3/lib/xattr_tdb.c
index 21223f04b8..6f33163ed6 100644
--- a/source3/lib/xattr_tdb.c
+++ b/source3/lib/xattr_tdb.c
@@ -169,8 +169,9 @@ static NTSTATUS xattr_tdb_save_attrs(struct db_record *rec,
*/
ssize_t xattr_tdb_getattr(struct db_context *db_ctx,
+ TALLOC_CTX *mem_ctx,
const struct file_id *id,
- const char *name, void *value, size_t size)
+ const char *name, DATA_BLOB *blob)
{
struct tdb_xattrs *attribs;
uint32_t i;
@@ -200,13 +201,8 @@ ssize_t xattr_tdb_getattr(struct db_context *db_ctx,
goto fail;
}
- if (attribs->eas[i].value.length > size) {
- errno = ERANGE;
- goto fail;
- }
-
- memcpy(value, attribs->eas[i].value.data,
- attribs->eas[i].value.length);
+ *blob = attribs->eas[i].value;
+ talloc_steal(mem_ctx, blob->data);
result = attribs->eas[i].value.length;
fail: