From a9ae5b37bf5c7a3accbd2a513c354c4467547a05 Mon Sep 17 00:00:00 2001 From: Star Zeng Date: Mon, 13 Aug 2018 16:50:37 +0800 Subject: MdeModulePkg SmmLockBox: Return actual data length in SmmLockBoxRestore REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1082 Current code only returns actual data length in case of return status buffer too small. If caller provided a buffer that's large enough to restore data from lock box, actual data length is not returned. It needs to be updated in case of return status as success as well. Cc: Jiewen Yao Cc: Anbazhagan Baraneedharan Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng Reviewed-by: Jiewen Yao --- MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'MdeModulePkg/Universal/LockBox') diff --git a/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c b/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c index 28d5180..5a11743 100644 --- a/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c +++ b/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c @@ -217,7 +217,10 @@ SmmLockBoxRestore ( (VOID *)(UINTN)TempLockBoxParameterRestore.Buffer, (UINTN *)&TempLockBoxParameterRestore.Length ); - if (Status == EFI_BUFFER_TOO_SMALL) { + if ((Status == EFI_BUFFER_TOO_SMALL) || (Status == EFI_SUCCESS)) { + // + // Return the actual Length value. + // LockBoxParameterRestore->Length = TempLockBoxParameterRestore.Length; } } -- cgit v1.1