From: Brian Foster <bfoster@redhat.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org, sandeen@sandeen.net
Subject: Re: [PATCH 5/5] xfs: check attribute name validity
Date: Fri, 11 Jan 2019 10:11:06 -0500 [thread overview]
Message-ID: <20190111151105.GD30640@bfoster> (raw)
In-Reply-To: <154697979588.2839.8961664194626235093.stgit@magnolia>
On Tue, Jan 08, 2019 at 12:36:35PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
>
> Check extended attribute entry names for invalid characters.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
Reviewed-by: Brian Foster <bfoster@redhat.com>
> fs/xfs/libxfs/xfs_attr.c | 17 +++++++++++++++++
> fs/xfs/libxfs/xfs_attr.h | 2 +-
> fs/xfs/scrub/attr.c | 6 ++++++
> 3 files changed, 24 insertions(+), 1 deletion(-)
>
>
> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
> index 844ed87b1900..2dd9ee2a2e08 100644
> --- a/fs/xfs/libxfs/xfs_attr.c
> +++ b/fs/xfs/libxfs/xfs_attr.c
> @@ -1336,3 +1336,20 @@ xfs_attr_node_get(xfs_da_args_t *args)
> xfs_da_state_free(state);
> return retval;
> }
> +
> +/* Returns true if the attribute entry name is valid. */
> +bool
> +xfs_attr_namecheck(
> + const void *name,
> + size_t length)
> +{
> + /*
> + * MAXNAMELEN includes the trailing null, but (name/length) leave it
> + * out, so use >= for the length check.
> + */
> + if (length >= MAXNAMELEN)
> + return false;
> +
> + /* There shouldn't be any nulls here */
> + return !memchr(name, 0, length);
> +}
> diff --git a/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h
> index bdf52a333f3f..2297d8467666 100644
> --- a/fs/xfs/libxfs/xfs_attr.h
> +++ b/fs/xfs/libxfs/xfs_attr.h
> @@ -145,6 +145,6 @@ int xfs_attr_remove(struct xfs_inode *dp, const unsigned char *name, int flags);
> int xfs_attr_remove_args(struct xfs_da_args *args);
> int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize,
> int flags, struct attrlist_cursor_kern *cursor);
> -
> +bool xfs_attr_namecheck(const void *name, size_t length);
>
> #endif /* __XFS_ATTR_H__ */
> diff --git a/fs/xfs/scrub/attr.c b/fs/xfs/scrub/attr.c
> index 9960bc5b5d76..dce74ec57038 100644
> --- a/fs/xfs/scrub/attr.c
> +++ b/fs/xfs/scrub/attr.c
> @@ -93,6 +93,12 @@ xchk_xattr_listent(
> return;
> }
>
> + /* Does this name make sense? */
> + if (!xfs_attr_namecheck(name, namelen)) {
> + xchk_fblock_set_corrupt(sx->sc, XFS_ATTR_FORK, args.blkno);
> + return;
> + }
> +
> args.flags = ATTR_KERNOTIME;
> if (flags & XFS_ATTR_ROOT)
> args.flags |= ATTR_ROOT;
>
next prev parent reply other threads:[~2019-01-11 15:11 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-08 20:36 [PATCH 0/5] xfs: general scrubber fixes Darrick J. Wong
2019-01-08 20:36 ` [PATCH 1/5] xfs: abort xattr scrub if fatal signals are pending Darrick J. Wong
2019-01-08 20:36 ` [PATCH 2/5] xfs: scrub should flag dir/attr offsets that aren't mappable with xfs_dablk_t Darrick J. Wong
2019-01-11 15:10 ` Brian Foster
2019-01-08 20:36 ` [PATCH 3/5] xfs: fix off-by-one error in rtbitmap cross-reference Darrick J. Wong
2019-01-11 15:10 ` Brian Foster
2019-01-14 20:31 ` Darrick J. Wong
2019-01-14 20:32 ` [PATCH v2 " Darrick J. Wong
2019-01-15 10:49 ` Brian Foster
2019-01-15 19:32 ` Darrick J. Wong
2019-01-08 20:36 ` [PATCH 4/5] xfs: check directory name validity Darrick J. Wong
2019-01-11 15:11 ` Brian Foster
2019-01-08 20:36 ` [PATCH 5/5] xfs: check attribute " Darrick J. Wong
2019-01-11 15:11 ` Brian Foster [this message]
2019-01-08 20:42 ` [PATCH 6/5] libxfs(progs): fix attr include mess Darrick J. Wong
2019-01-08 20:42 ` [PATCH 7/5] xfs_repair: refactor namecheck functions Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190111151105.GD30640@bfoster \
--to=bfoster@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@sandeen.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.