mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
fill_from_part() computes the size of a directory entry in size_t but
stores it in a __u32. An entry length near U32_MAX wraps it to a small
value, bypasses the bounds check, and is then used to index the entry,
reading far past the directory part -- an out-of-bounds read that oopses
the kernel.
Compute the size as a u64 so it cannot truncate; the bounds check then
rejects the entry. The trailer is supplied by the userspace client.
Fixes:
|
||
|---|---|---|
| .. | ||
| acl.c | ||
| dcache.c | ||
| devorangefs-req.c | ||
| dir.c | ||
| downcall.h | ||
| file.c | ||
| inode.c | ||
| Kconfig | ||
| Makefile | ||
| namei.c | ||
| orangefs-bufmap.c | ||
| orangefs-bufmap.h | ||
| orangefs-cache.c | ||
| orangefs-debug.h | ||
| orangefs-debugfs.c | ||
| orangefs-debugfs.h | ||
| orangefs-dev-proto.h | ||
| orangefs-kernel.h | ||
| orangefs-mod.c | ||
| orangefs-sysfs.c | ||
| orangefs-sysfs.h | ||
| orangefs-utils.c | ||
| protocol.h | ||
| super.c | ||
| symlink.c | ||
| upcall.h | ||
| waitqueue.c | ||
| xattr.c | ||