diff --git a/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c b/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c index 1f9c3b4836..35862c6223 100644 --- a/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c +++ b/MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.c @@ -1,6 +1,6 @@ /** @file -Copyright (c) 2010, Intel Corporation. All rights reserved.
+Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions @@ -183,11 +183,19 @@ SmmLockBoxRestore ( // // Restore data // - Status = RestoreLockBox ( - &LockBoxParameterRestore->Guid, - (VOID *)(UINTN)LockBoxParameterRestore->Buffer, - (UINTN *)&LockBoxParameterRestore->Length - ); + if ((LockBoxParameterRestore->Length == 0) && (LockBoxParameterRestore->Buffer == 0)) { + Status = RestoreLockBox ( + &LockBoxParameterRestore->Guid, + NULL, + NULL + ); + } else { + Status = RestoreLockBox ( + &LockBoxParameterRestore->Guid, + (VOID *)(UINTN)LockBoxParameterRestore->Buffer, + (UINTN *)&LockBoxParameterRestore->Length + ); + } LockBoxParameterRestore->Header.ReturnStatus = (UINT64)Status; return ; }