mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
encrypted_key_alloc() stores datablob_len in a u16. It is computed from
multiple string and payload lengths. If the result exceeds U16_MAX, the
assignment truncates the allocation size. KASAN reports a 32760-byte
slab-out-of-bounds write when __ekey_init() copies the master key
description into the undersized buffer.
The total payload length stored in key->datalen is also a u16. Use
check_add_overflow() to reject values that do not fit either destination,
and use kzalloc_flex() for the flexible-array allocation.
Fixes:
|
||
|---|---|---|
| .. | ||
| ecryptfs_format.c | ||
| ecryptfs_format.h | ||
| encrypted.c | ||
| encrypted.h | ||
| Makefile | ||
| masterkey_trusted.c | ||