efi_loader: Fix buffer underflow
If the array index 'i' < 128, the 'codepage' array is accessed using
[-128...-1] in efi_unicode_collation.c:262. This can lead to a buffer
overflow.
Negative index in efi_unicode_collation.c:262.
The index of the 'codepage' array should be c - 0x80 instead of i - 0x80.
Fixes: 0bc4b0da7b
("efi_loader: EFI_UNICODE_COLLATION_PROTOCOL")
Signed-off-by: Mikhail Ilin <ilin.mikhail.ol@gmail.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
16e49a14b2
commit
ae182a25f5
@ -257,7 +257,7 @@ static void EFIAPI efi_fat_to_str(struct efi_unicode_collation_protocol *this,
|
||||
for (i = 0; i < fat_size; ++i) {
|
||||
c = (unsigned char)fat[i];
|
||||
if (c > 0x80)
|
||||
c = codepage[i - 0x80];
|
||||
c = codepage[c - 0x80];
|
||||
string[i] = c;
|
||||
if (!c)
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user