diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2019-06-13 00:28:42 +0300 |
---|---|---|
committer | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2019-06-14 20:18:40 +0300 |
commit | c77d8e9d893ea06082e3ea0f609895b306db1623 (patch) | |
tree | fb2b457d1834e0ee40d0b2bb5e595061a73cc03a /lib/efi_loader/efi_variable.c | |
parent | 17416eaff2bee8f81a094fb2805a2f1920c81a5e (diff) | |
download | u-boot-c77d8e9d893ea06082e3ea0f609895b306db1623.tar.xz |
efi_loader: parameter checks SetVariable()
Return EFI_INVALID_PARAMETER if the variable name has zero length or the
variable has runtime access but not boottime access.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Diffstat (limited to 'lib/efi_loader/efi_variable.c')
-rw-r--r-- | lib/efi_loader/efi_variable.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/efi_loader/efi_variable.c b/lib/efi_loader/efi_variable.c index e56053194d..1d1b23b0e5 100644 --- a/lib/efi_loader/efi_variable.c +++ b/lib/efi_loader/efi_variable.c @@ -430,7 +430,9 @@ efi_status_t EFIAPI efi_set_variable(u16 *variable_name, data_size, data); /* TODO: implement APPEND_WRITE */ - if (!variable_name || !vendor || + if (!variable_name || !*variable_name || !vendor || + ((attributes & EFI_VARIABLE_RUNTIME_ACCESS) && + !(attributes & EFI_VARIABLE_BOOTSERVICE_ACCESS)) || (attributes & EFI_VARIABLE_APPEND_WRITE)) { ret = EFI_INVALID_PARAMETER; goto out; |