On Tue, Jul 09, 2024 at 04:10:20PM GMT, Hongbo Li wrote:
> The longest name length for file is BCH_NAME_MAX in bcachefs.
> When looking up a longer path, it does not check this limit. So
> we add the validation for this to avoid undetermined risk.

What's the actual bug this fixes?

> 
> Signed-off-by: Hongbo Li <[email protected]>
> ---
>  fs/bcachefs/fs.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c
> index fd01a5402c28..f8da598ca9f8 100644
> --- a/fs/bcachefs/fs.c
> +++ b/fs/bcachefs/fs.c
> @@ -474,6 +474,9 @@ static struct dentry *bch2_lookup(struct inode *vdir, 
> struct dentry *dentry,
>       struct bch_inode_info *dir = to_bch_ei(vdir);
>       struct bch_hash_info hash = bch2_hash_info_init(c, &dir->ei_inode);
>  
> +     if (dentry->d_name.len > BCH_NAME_MAX)
> +             return ERR_PTR(-ENAMETOOLONG);
> +
>       struct bch_inode_info *inode;
>       bch2_trans_do(c, NULL, NULL, 0,
>               PTR_ERR_OR_ZERO(inode = bch2_lookup_trans(trans, 
> inode_inum(dir),
> -- 
> 2.34.1
> 

Reply via email to