diff --git a/fs/udf/directory.c b/fs/udf/directory.c index 0a98a2369738fc2cff925c80066b92a58b299066..3835f983cc99ff335a052c990f259640ce09fa84 100644 --- a/fs/udf/directory.c +++ b/fs/udf/directory.c @@ -152,6 +152,9 @@ struct fileIdentDesc *udf_fileident_read(struct inode *dir, loff_t *nf_pos, sizeof(struct fileIdentDesc)); } } + /* Got last entry outside of dir size - fs is corrupted! */ + if (*nf_pos > dir->i_size) + return NULL; return fi; }