Пример #1
0
{
    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;
Пример #2
0
				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;