{ struct file_id id; struct db_context *db; ssize_t xattr_size; int ret; DATA_BLOB blob; TALLOC_CTX *frame = talloc_stackframe(); SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, if (!xattr_tdb_init(-1, frame, &db)) { TALLOC_FREE(frame); return -1; }); ret = xattr_tdb_get_file_id(handle, path, &id); if (ret == -1) { TALLOC_FREE(frame); return -1; } xattr_size = xattr_tdb_getattr(db, frame, &id, name, &blob); if (xattr_size < 0) { errno = ENOATTR; TALLOC_FREE(frame); return -1; } if (blob.length > size) { TALLOC_FREE(frame); errno = ERANGE; return -1;
size_t size) { struct file_id id; struct db_context *db; ssize_t xattr_size; int ret; DATA_BLOB blob; TALLOC_CTX *frame = talloc_stackframe(); SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, if (!xattr_tdb_init(-1, frame, &db)) { TALLOC_FREE(frame); return -1; }); ret = xattr_tdb_get_file_id(handle, smb_fname->base_name, &id); if (ret == -1) { TALLOC_FREE(frame); return -1; } xattr_size = xattr_tdb_getattr(db, frame, &id, name, &blob); if (xattr_size < 0) { errno = ENOATTR; TALLOC_FREE(frame); return -1; } if (size == 0) { TALLOC_FREE(frame); return xattr_size;