diff --git a/fs/udf/inode.c b/fs/udf/inode.c index 67bcf83758c8..c4a08e8bc1c9 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c @@ -2299,6 +2299,13 @@ int udf_current_aext(struct inode *inode, struct extent_position *epos, return -EINVAL; } + if (eloc->partitionReferenceNum >= UDF_SB(inode->i_sb)->s_partitions) { + udf_debug("invalid partition reference %u (partitions %u)\n", + eloc->partitionReferenceNum, + UDF_SB(inode->i_sb)->s_partitions); + return -EFSCORRUPTED; + } + return 1; }