diff mbox

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

Message ID 1407916835-2862-1-git-send-email-ivan.hu@canonical.com
State Accepted
Headers show

Commit Message

Ivan Hu Aug. 13, 2014, 8 a.m. UTC
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@canonical.com>
---
 src/uefi/uefirtvariable/uefirtvariable.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Keng-Yu Lin Aug. 13, 2014, 9:10 a.m. UTC | #1
On Wed, Aug 13, 2014 at 4:00 PM, Ivan Hu <ivan.hu@canonical.com> wrote:
> 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@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
>
>

Acked-by: Keng-Yu Lin <kengyu@canonical.com>
Alex Hung Aug. 13, 2014, 9:52 a.m. UTC | #2
On 08/13/2014 04:00 PM, Ivan Hu wrote:
>  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@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",
>
Acked-by: Alex Hung <alex.hung@canonical.com>
Kun Yang Aug. 14, 2014, 5:47 a.m. UTC | #3

diff mbox

Patch

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",