efi_loader: loosen check of parameters of efi_file_open()

The UEFI spec requires that attributes are only set for when
EFI_FILE_MODE_CREATE is set in open_mode.

The SCT tries to read a directory with EFI_FILE_DIRECTORY.

As EDK2 allows this we should not be more strict.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lime2-spi
Heinrich Schuchardt 6 years ago committed by Alexander Graf
parent 1c381cebb7
commit bd66588657
  1. 11
      lib/efi_loader/efi_file.c

@ -229,7 +229,16 @@ static efi_status_t EFIAPI efi_file_open(struct efi_file_handle *file,
ret = EFI_INVALID_PARAMETER;
goto out;
}
if ((!(open_mode & EFI_FILE_MODE_CREATE) && attributes) ||
/*
* The UEFI spec requires that attributes are only set in create mode.
* The SCT does not care about this and sets EFI_FILE_DIRECTORY in
* read mode. EDK2 does not check that attributes are zero if not in
* create mode.
*
* So here we only check attributes in create mode and do not check
* that they are zero otherwise.
*/
if ((open_mode & EFI_FILE_MODE_CREATE) &&
(attributes & (EFI_FILE_READ_ONLY | ~EFI_FILE_VALID_ATTR))) {
ret = EFI_INVALID_PARAMETER;
goto out;

Loading…
Cancel
Save