diff --git a/fs/isofs/dir.c b/fs/isofs/dir.c index eb2f8273e6f1..312dacfe6623 100644 --- a/fs/isofs/dir.c +++ b/fs/isofs/dir.c @@ -146,6 +146,12 @@ static int do_isofs_readdir(struct inode *inode, struct file *file, } de = tmpde; } + + if (de_len < sizeof(struct iso_directory_record)) { + brelse(bh); + return -EIO; + } + /* Basic sanity check, whether name doesn't exceed dir entry */ if (de_len < de->name_len[0] + sizeof(struct iso_directory_record)) {