lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 16 Jun 2022 12:06:10 +0200 From: Jan Kara <jack@...e.cz> To: Baokun Li <libaokun1@...wei.com> Cc: linux-ext4@...r.kernel.org, tytso@....edu, adilger.kernel@...ger.ca, jack@...e.cz, ritesh.list@...il.com, lczerner@...hat.com, enwlinux@...il.com, linux-kernel@...r.kernel.org, yi.zhang@...wei.com, yebin10@...wei.com, yukuai3@...wei.com Subject: Re: [PATCH v3 1/4] ext4: add EXT4_INODE_HAS_XATTR_SPACE macro in xattr.h On Thu 16-06-22 10:13:55, Baokun Li wrote: > When adding an xattr to an inode, we must ensure that the inode_size is > not less than EXT4_GOOD_OLD_INODE_SIZE + extra_isize + pad. Otherwise, > the end position may be greater than the start position, resulting in UAF. > > Signed-off-by: Baokun Li <libaokun1@...wei.com> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@...e.cz> Honza > --- > fs/ext4/xattr.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h > index 77efb9a627ad..f885f362add4 100644 > --- a/fs/ext4/xattr.h > +++ b/fs/ext4/xattr.h > @@ -95,6 +95,19 @@ struct ext4_xattr_entry { > > #define EXT4_ZERO_XATTR_VALUE ((void *)-1) > > +/* > + * If we want to add an xattr to the inode, we should make sure that > + * i_extra_isize is not 0 and that the inode size is not less than > + * EXT4_GOOD_OLD_INODE_SIZE + extra_isize + pad. > + * EXT4_GOOD_OLD_INODE_SIZE extra_isize header entry pad data > + * |--------------------------|------------|------|---------|---|-------| > + */ > +#define EXT4_INODE_HAS_XATTR_SPACE(inode) \ > + ((EXT4_I(inode)->i_extra_isize != 0) && \ > + (EXT4_GOOD_OLD_INODE_SIZE + EXT4_I(inode)->i_extra_isize + \ > + sizeof(struct ext4_xattr_ibody_header) + EXT4_XATTR_PAD <= \ > + EXT4_INODE_SIZE((inode)->i_sb))) > + > struct ext4_xattr_info { > const char *name; > const void *value; > -- > 2.31.1 > -- Jan Kara <jack@...e.com> SUSE Labs, CR
Powered by blists - more mailing lists