diff --git a/fs/udf/inode.c b/fs/udf/inode.c index bacf2a86161e..88b1c7d351e1 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c @@ -1607,6 +1607,11 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode) */ if (iinfo->i_lenEAttr > bs || iinfo->i_lenAlloc > bs) goto out; + /* We need to have space at least for generic descriptor */ + if (iinfo->i_lenEAttr && iinfo->i_lenEAttr < + sizeof(struct extendedAttrHeaderDesc)) + goto out; + /* Now do exact checks */ if (udf_file_entry_alloc_offset(inode) + iinfo->i_lenAlloc > bs) goto out;