From 887c077d91a648a5e206cc19790878ebf521745e Mon Sep 17 00:00:00 2001 From: rsun3 Date: Thu, 16 Apr 2009 07:02:42 +0000 Subject: [PATCH] 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 --- .../FrameworkHiiOnUefiHiiThunk/ConfigAccess.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/ConfigAccess.c index ac6f2ac244..b8d0021303 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); -- 2.39.2