diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c index 35675a1065be841b51868ff32ab94f21953f7f74..f62b5a501566841dc64b776e6b49d6fdad3d083a 100644 --- a/fs/isofs/inode.c +++ b/fs/isofs/inode.c @@ -1321,6 +1321,8 @@ static int isofs_read_inode(struct inode *inode, int relocated) de = (struct iso_directory_record *) (bh->b_data + offset); de_len = *(unsigned char *) de; + if (de_len < sizeof(struct iso_directory_record)) + goto fail; if (offset + de_len > bufsize) { int frag1 = bufsize - offset;