mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-21 18:03:41 +03:00
boot: Fix off-by-one NUL-termination
(cherry picked from commit fab82756462fd0ce82836e3d95721954d7ab2527)
This commit is contained in:
parent
93ddabc26a
commit
0c7ef2c166
@ -316,6 +316,6 @@ TEST_STATIC CHAR16 *get_bcd_title(UINT8 *bcd, UINTN bcd_len) {
|
||||
|
||||
/* The data should already be NUL-terminated. */
|
||||
CHAR16 *title = (CHAR16 *) (bcd + description_value->data_offset);
|
||||
title[description_value->data_size / sizeof(CHAR16)] = '\0';
|
||||
title[description_value->data_size / sizeof(CHAR16) - 1] = '\0';
|
||||
return title;
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ EFI_STATUS efivar_get(const EFI_GUID *vendor, const CHAR16 *name, CHAR16 **value
|
||||
return EFI_SUCCESS;
|
||||
|
||||
/* Return buffer directly if it happens to be NUL terminated already */
|
||||
if (size >= sizeof(CHAR16) && buf[size/sizeof(CHAR16)] == 0) {
|
||||
if (size >= sizeof(CHAR16) && buf[size / sizeof(CHAR16) - 1] == 0) {
|
||||
*value = TAKE_PTR(buf);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@ -183,7 +183,7 @@ EFI_STATUS efivar_get(const EFI_GUID *vendor, const CHAR16 *name, CHAR16 **value
|
||||
val = xallocate_pool(size + sizeof(CHAR16));
|
||||
|
||||
CopyMem(val, buf, size);
|
||||
val[size / sizeof(CHAR16)] = 0; /* NUL terminate */
|
||||
val[size / sizeof(CHAR16) - 1] = 0; /* NUL terminate */
|
||||
|
||||
*value = val;
|
||||
return EFI_SUCCESS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user