|
@@ -145,6 +145,14 @@ static int do_isofs_readdir(struct inode *inode, struct file *filp,
|
|
|
}
|
|
|
de = tmpde;
|
|
|
}
|
|
|
+ /* Basic sanity check, whether name doesn't exceed dir entry */
|
|
|
+ if (de_len < de->name_len[0] +
|
|
|
+ sizeof(struct iso_directory_record)) {
|
|
|
+ printk(KERN_NOTICE "iso9660: Corrupted directory entry"
|
|
|
+ " in block %lu of inode %lu\n", block,
|
|
|
+ inode->i_ino);
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
|
|
|
if (first_de) {
|
|
|
isofs_normalize_block_and_offset(de,
|