From: Brian Foster <bfoster@redhat.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 4/5] xfs: attr leaf verifier needs to check for obviously bad count
Date: Mon, 15 Jan 2018 09:42:12 -0500 [thread overview]
Message-ID: <20180115144211.GD47688@bfoster.bfoster> (raw)
In-Reply-To: <151579466415.8694.4992590880368427655.stgit@magnolia>
On Fri, Jan 12, 2018 at 02:04:24PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
>
> In the attribute leaf verifier, we can check for obviously bad values of
> firstused and count so that later attempts at lasthash don't run off the
> end of the memory buffer. Found by ones fuzzing hdr.count in xfs/400 with
> KASAN.
>
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
> fs/xfs/libxfs/xfs_attr_leaf.c | 19 ++++++++++++++-----
> 1 file changed, 14 insertions(+), 5 deletions(-)
>
>
> diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c
> index 6fddce7..712d458 100644
> --- a/fs/xfs/libxfs/xfs_attr_leaf.c
> +++ b/fs/xfs/libxfs/xfs_attr_leaf.c
> @@ -249,12 +249,13 @@ xfs_attr3_leaf_hdr_to_disk(
>
> static xfs_failaddr_t
> xfs_attr3_leaf_verify(
> - struct xfs_buf *bp)
> + struct xfs_buf *bp)
> {
> - struct xfs_mount *mp = bp->b_target->bt_mount;
> - struct xfs_attr_leafblock *leaf = bp->b_addr;
> - struct xfs_perag *pag = bp->b_pag;
> - struct xfs_attr3_icleaf_hdr ichdr;
> + struct xfs_attr3_icleaf_hdr ichdr;
> + struct xfs_mount *mp = bp->b_target->bt_mount;
> + struct xfs_attr_leafblock *leaf = bp->b_addr;
> + struct xfs_perag *pag = bp->b_pag;
> + struct xfs_attr_leaf_entry *entries;
>
> xfs_attr3_leaf_hdr_from_disk(mp->m_attr_geo, &ichdr, leaf);
>
> @@ -282,6 +283,14 @@ xfs_attr3_leaf_verify(
> if (pag && pag->pagf_init && ichdr.count == 0)
> return __this_address;
>
> + if (ichdr.firstused > mp->m_attr_geo->blksize)
> + return __this_address;
> +
> + entries = xfs_attr3_leaf_entryp(bp->b_addr);
> + if ((char *)&entries[ichdr.count] >=
> + (char *)bp->b_addr + ichdr.firstused)
> + return __this_address;
> +
Hmm, this check confuses me a bit. Should we not consider the header
size in this calculation? (A comment would be useful either way..)
Brian
> /* XXX: need to range check rest of attr header values */
> /* XXX: hash order check? */
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-01-15 14:42 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-12 22:03 [PATCH 0/5] xfs: kasan/ubsan fixes Darrick J. Wong
2018-01-12 22:04 ` [PATCH 1/5] xfs: check sb_agblocks and sb_agblklog when validating superblock Darrick J. Wong
2018-01-15 14:41 ` Brian Foster
2018-01-15 19:49 ` Darrick J. Wong
2018-01-15 20:03 ` [PATCH v2 " Darrick J. Wong
2018-01-15 21:31 ` Dave Chinner
2018-01-16 7:00 ` Darrick J. Wong
2018-01-16 12:48 ` Brian Foster
2018-01-16 17:34 ` Darrick J. Wong
2018-01-16 18:02 ` Brian Foster
2018-01-16 21:10 ` Darrick J. Wong
2018-01-17 1:20 ` [PATCH v3 " Darrick J. Wong
2018-01-17 12:55 ` Brian Foster
2018-01-12 22:04 ` [PATCH 2/5] xfs: don't iunlock unlocked inodes Darrick J. Wong
2018-01-15 14:41 ` Brian Foster
2018-01-12 22:04 ` [PATCH 3/5] xfs: directory scrubber must walk through data block to offset Darrick J. Wong
2018-01-15 14:41 ` Brian Foster
2018-01-15 19:53 ` Darrick J. Wong
2018-01-15 20:04 ` [PATCH v2 " Darrick J. Wong
2018-01-15 21:56 ` Dave Chinner
2018-01-16 7:01 ` Darrick J. Wong
2018-01-16 23:30 ` [PATCH v3 " Darrick J. Wong
2018-01-17 0:29 ` Dave Chinner
2018-01-12 22:04 ` [PATCH 4/5] xfs: attr leaf verifier needs to check for obviously bad count Darrick J. Wong
2018-01-15 14:42 ` Brian Foster [this message]
2018-01-15 19:59 ` Darrick J. Wong
2018-01-15 20:05 ` [PATCH v2 " Darrick J. Wong
2018-01-16 12:50 ` Brian Foster
2018-01-16 23:32 ` Darrick J. Wong
2018-01-12 22:04 ` [PATCH 5/5] xfs: btree format ifork loader should check for zero numrecs Darrick J. Wong
2018-01-15 14:42 ` Brian Foster
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=20180115144211.GD47688@bfoster.bfoster \
--to=bfoster@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.org \
/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.