efi_loader: GetVariable set attributes for EFI_BUFFER_TOO_SMALL
UEFI spec 2.7 erratum A leaves it undefined if Attributes should be set if GetVariable() returns EFI_BUFFER_TOO_SMALL. UEFI spec 2.8 defines that Attributes should be set if the return value is either EFI_SUCCESS or EFI_BUFFER_TOO_SMALL. Set Attributes if the return value is EFI_BUFFER_TOO_SMALL. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
98b3156b0d
commit
487d8c75f1
@ -202,8 +202,10 @@ efi_status_t EFIAPI efi_get_variable(u16 *variable_name,
|
||||
len /= 2;
|
||||
*data_size = len;
|
||||
|
||||
if (in_size < len)
|
||||
return EFI_EXIT(EFI_BUFFER_TOO_SMALL);
|
||||
if (in_size < len) {
|
||||
ret = EFI_BUFFER_TOO_SMALL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!data)
|
||||
return EFI_EXIT(EFI_INVALID_PARAMETER);
|
||||
@ -217,8 +219,10 @@ efi_status_t EFIAPI efi_get_variable(u16 *variable_name,
|
||||
|
||||
*data_size = len;
|
||||
|
||||
if (in_size < len)
|
||||
return EFI_EXIT(EFI_BUFFER_TOO_SMALL);
|
||||
if (in_size < len) {
|
||||
ret = EFI_BUFFER_TOO_SMALL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!data)
|
||||
return EFI_EXIT(EFI_INVALID_PARAMETER);
|
||||
@ -232,10 +236,11 @@ efi_status_t EFIAPI efi_get_variable(u16 *variable_name,
|
||||
return EFI_EXIT(EFI_DEVICE_ERROR);
|
||||
}
|
||||
|
||||
out:
|
||||
if (attributes)
|
||||
*attributes = attr & EFI_VARIABLE_MASK;
|
||||
|
||||
return EFI_EXIT(EFI_SUCCESS);
|
||||
return EFI_EXIT(ret);
|
||||
}
|
||||
|
||||
static char *efi_variables_list;
|
||||
|
Loading…
Reference in New Issue
Block a user