eCryptfs: Check Tag 11 literal data buffer size
Tag 11 packets are stored in the metadata section of an eCryptfs file to store the key signature(s) used to encrypt the file encryption key. After extracting the packet length field to determine the key signature length, a check is not performed to see if the length would exceed the key signature buffer size that was passed into parse_tag_11_packet(). Thanks to Ramon de Carvalho Valle for finding this bug using fsfuzzer. Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com> Cc: stable@kernel.org (2.6.27 and 30) Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
4733fd328f
Коммит
6352a29305
|
@ -1449,6 +1449,12 @@ parse_tag_11_packet(unsigned char *data, unsigned char *contents,
|
|||
rc = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (unlikely((*tag_11_contents_size) > max_contents_bytes)) {
|
||||
printk(KERN_ERR "Literal data section in tag 11 packet exceeds "
|
||||
"expected size\n");
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (data[(*packet_size)++] != 0x62) {
|
||||
printk(KERN_WARNING "Unrecognizable packet\n");
|
||||
rc = -EINVAL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче