summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-16 07:02:42 +0000
committerrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>2009-04-16 07:02:42 +0000
commit887c077d91a648a5e206cc19790878ebf521745e (patch)
tree30a28e435ab3e6edb1942f2ad1e7d86938ba9253
parentb2f5a3718b075ac8967d3c9c529fefe8b0d3ec3d (diff)
downloadedk2-887c077d91a648a5e206cc19790878ebf521745e.zip
edk2-887c077d91a648a5e206cc19790878ebf521745e.tar.gz
edk2-887c077d91a648a5e206cc19790878ebf521745e.tar.bz2
Fix an issue that an assert occurrs if user inputs a password whose length is less than the minimum required length. The root cause is that under such case the Form Browser will pass a null string (string ID = 0) to the Config Access callback. The callback handler does not handle such case correctly.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8103 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c
index ac6f2ac..b8d0021 100644
--- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c
+++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c
@@ -690,10 +690,14 @@ CreateIfrDataArray (
break;
case EFI_IFR_TYPE_STRING:
- String = HiiGetString (ConfigAccess->ThunkContext->UefiHiiHandle, Value->string, NULL);
- ASSERT (String != NULL);
+ if (Value->string == 0) {
+ Size = 0;
+ } else {
+ String = HiiGetString (ConfigAccess->ThunkContext->UefiHiiHandle, Value->string, NULL);
+ ASSERT (String != NULL);
- Size = StrSize (String);
+ Size = StrSize (String);
+ }
break;
default:
@@ -741,9 +745,11 @@ CreateIfrDataArray (
break;
case EFI_IFR_TYPE_STRING:
- ASSERT (String != NULL);
- StrCpy ((CHAR16 *) &IfrDataEntry->Data, String);
- FreePool (String);
+ if (Size != 0) {
+ ASSERT (String != NULL);
+ StrCpy ((CHAR16 *) &IfrDataEntry->Data, String);
+ FreePool (String);
+ }
break;
default:
ASSERT (FALSE);