forked from Minki/linux
hfs: fix namelength memory corruption
Fix a stack corruption caused by a corrupted hfs filesystem. If the catalog name length is corrupted the memcpy overwrites the catalog btree structure. Since the field is limited to HFS_NAMELEN bytes in the structure and the file format, we throw an error if it is too long. Cc: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Eric Sesterhenn <snakebyte@gmx.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
649f1ee6c7
commit
d38b7aa7fc
@ -190,6 +190,10 @@ int hfs_cat_find_brec(struct super_block *sb, u32 cnid,
|
||||
|
||||
fd->search_key->cat.ParID = rec.thread.ParID;
|
||||
len = fd->search_key->cat.CName.len = rec.thread.CName.len;
|
||||
if (len > HFS_NAMELEN) {
|
||||
printk(KERN_ERR "hfs: bad catalog namelength\n");
|
||||
return -EIO;
|
||||
}
|
||||
memcpy(fd->search_key->cat.CName.name, rec.thread.CName.name, len);
|
||||
return hfs_brec_find(fd);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user