Reviewed-by: Liming Gao <[email protected]>

> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of
> Dandan Bi
> Sent: Thursday, September 08, 2016 5:10 PM
> To: [email protected]
> Cc: Dong, Eric <[email protected]>; Gao, Liming <[email protected]>
> Subject: [edk2] [patch] MdeModulePkg/HiiDB: Handle the "&READONLY" tag
> in <KeywordResp> correctly
> 
> This patch is to fix the incorrect logic when handling the "&READONLY" tag
> in <KeywordResp>.
> 1. In UEFI spec, the "&READONLY" tag is in upper case, but using the lower
> case in current codes by mistake.
> 2. The logic in checking the ReadOnly flag is not correct. Whether having
> "&READONLY" tag must be consistent with the result of
> "ExtractReadOnlyFromOpCode" function.
> 
> Cc: Liming Gao <[email protected]>
> Cc: Eric Dong <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Dandan Bi <[email protected]>
> ---
>  .../Universal/HiiDatabaseDxe/ConfigKeywordHandler.c     | 17
> +++++++++++++----
>  1 file changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git
> a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
> b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
> index 6682319..10a901f 100644
> --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
> +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
> @@ -2905,15 +2905,15 @@ EfiConfigKeywordHandlerSetData (
>        goto Done;
>      }
>      StringPtr = NextStringPtr;
> 
>      //
> -    // 5. Find ReadOnly filter.
> +    // 5. Find READONLY tag.
>      //
> -    if ((StringPtr != NULL) && StrnCmp (StringPtr, L"&ReadOnly", StrLen
> (L"&ReadOnly")) == 0) {
> +    if ((StringPtr != NULL) && StrnCmp (StringPtr, L"&READONLY", StrLen
> (L"&READONLY")) == 0) {
>        ReadOnly = TRUE;
> -      StringPtr += StrLen (L"&ReadOnly");
> +      StringPtr += StrLen (L"&READONLY");
>      } else {
>        ReadOnly = FALSE;
>      }
> 
>      //
> @@ -2935,13 +2935,22 @@ EfiConfigKeywordHandlerSetData (
> 
>      //
>      // 8. Check the readonly flag.
>      //
>      if (ExtractReadOnlyFromOpCode (OpCode) != ReadOnly) {
> +      //
> +      // Extracting readonly flag form opcode and extracting "READONLY" tag
> form KeywordString should have the same results.
> +      // If not, the input KeywordString must be incorrect, return the error
> status to caller.
> +      //
> +      *ProgressErr = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
> +      Status = EFI_INVALID_PARAMETER;
> +      goto Done;
> +    }
> +    if (ReadOnly) {
>        *ProgressErr = KEYWORD_HANDLER_ACCESS_NOT_PERMITTED;
>        Status = EFI_ACCESS_DENIED;
> -      goto Done;
> +      goto Done;
>      }
> 
>      //
>      // 9. Merge to the MultiKeywordResp string.
>      //
> --
> 1.9.5.msysgit.1
> 
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to