[PATCH 3/4] uefirtvariable: skip test when specific attributes not supported (LP: #1356199)

Ivan Hu ivan.hu at canonical.com
Wed Aug 13 08:00:35 UTC 2014


>From UEFI spec, when firmware doesn't support these operations with
EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS or EFI_VARIABLE_TIME_BASED_AUTHENTICATED
_WRITE_ACCESS or EFI_VARIABLE_APPEND_WRITE attributes are set,
EFI_INVALID_PARAMETER shall be returned.
When fwts gets the EFI_INVALID_PARAMETER returned with any of the attribute is set, skip the test.

Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
---
 src/uefi/uefirtvariable/uefirtvariable.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/uefi/uefirtvariable/uefirtvariable.c b/src/uefi/uefirtvariable/uefirtvariable.c
index 6a22c80..a69c804 100644
--- a/src/uefi/uefirtvariable/uefirtvariable.c
+++ b/src/uefi/uefirtvariable/uefirtvariable.c
@@ -780,6 +780,19 @@ static int setvariable_insertvariable(
 	ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable);
 
 	if (ioret == -1) {
+		if ((status == EFI_INVALID_PARAMETER) &&
+			((attributes | FWTS_UEFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) ||
+			(attributes | FWTS_UEFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) ||
+			(attributes | FWTS_UEFI_VARIABLE_APPEND_WRITE))) {
+			fwts_uefi_print_status_info(fw, status);
+			fwts_skipped(fw,
+				"EFI_INVALID_PARAMETER shall be returned, "
+				"when firmware doesn't support these operations "
+				"with EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS or "
+				"EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS "
+				"EFI_VARIABLE_APPEND_WRITE attributes is set.");
+			return FWTS_SKIP;
+		}
 		if (datasize == 0)
 			fwts_failed(fw, LOG_LEVEL_HIGH,
 				"UEFIRuntimeSetVariable",
-- 
1.7.9.5




More information about the fwts-devel mailing list