Revision: 18490
http://sourceforge.net/p/edk2/code/18490
Author: ydong10
Date: 2015-09-17 01:20:37 +0000 (Thu, 17 Sep 2015)
Log Message:
-----------
MdeModulePkg/HiiDatabase: Refine KeywordHandlerProtocol->SetData().
Update this function to follow UEFI spec requirement.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <[email protected]>
Reviewed-by: Liming Gao <[email protected]>
Modified Paths:
--------------
trunk/edk2/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
Modified:
trunk/edk2/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
2015-09-17 01:15:32 UTC (rev 18489)
+++ trunk/edk2/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
2015-09-17 01:20:37 UTC (rev 18490)
@@ -2829,6 +2829,7 @@
BOOLEAN ReadOnly;
EFI_STRING InternalProgress;
CHAR16 *TempString;
+ CHAR16 *KeywordStartPos;
if (This == NULL || Progress == NULL || ProgressErr == NULL || KeywordString
== NULL) {
return EFI_INVALID_PARAMETER;
@@ -2843,6 +2844,7 @@
KeywordData = NULL;
ValueElement = NULL;
ConfigResp = NULL;
+ KeywordStartPos = NULL;
KeywordStringId = 0;
//
@@ -2886,6 +2888,7 @@
//
// 3. Extract keyword from the KeywordRequest string.
//
+ KeywordStartPos = StringPtr;
Status = ExtractKeyword(StringPtr, &KeywordData, &NextStringPtr);
if (EFI_ERROR (Status)) {
//
@@ -2942,8 +2945,8 @@
// 8. Check the readonly flag.
//
if (ExtractReadOnlyFromOpCode (OpCode) != ReadOnly) {
- *ProgressErr = KEYWORD_HANDLER_INCOMPATIBLE_VALUE_DETECTED;
- Status = EFI_INVALID_PARAMETER;
+ *ProgressErr = KEYWORD_HANDLER_ACCESS_NOT_PERMITTED;
+ Status = EFI_ACCESS_DENIED;
goto Done;
}
@@ -2970,6 +2973,7 @@
FreePool (ConfigResp);
ConfigResp = NULL;
}
+ KeywordStartPos = NULL;
}
//
@@ -2988,7 +2992,11 @@
*ProgressErr = KEYWORD_HANDLER_NO_ERROR;
Done:
- *Progress = KeywordString + (StringPtr - TempString);
+ if (KeywordStartPos != NULL) {
+ *Progress = KeywordString + (KeywordStartPos - TempString);
+ } else {
+ *Progress = KeywordString + (StringPtr - TempString);
+ }
ASSERT (TempString != NULL);
FreePool (TempString);
@@ -3010,7 +3018,7 @@
if (MultiConfigResp != NULL && MultiConfigResp != ConfigResp) {
FreePool (MultiConfigResp);
}
-
+
return Status;
}
------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits