-/*++\r
+/** @file\r
+\r
+ Implement ReadOnly Variable Services required by PEIM and install\r
+ PI ReadOnly Varaiable2 PPI. These services operates the non volatile storage space.\r
\r
-Copyright (c) 2006 - 2007 Intel Corporation. <BR>\r
+Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
Module Name:\r
\r
- Variable.c\r
-\r
-Abstract:\r
-\r
- PEIM to provide the Variable functionality\r
-\r
---*/\r
+**/\r
\r
\r
#include "Variable.h"\r
//\r
// Module globals\r
//\r
-static EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariablePpi = {\r
+EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariablePpi = {\r
PeiGetVariable,\r
PeiGetNextVariableName\r
};\r
\r
-static EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = {\r
+EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = {\r
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
&gEfiPeiReadOnlyVariable2PpiGuid,\r
&mVariablePpi\r
return (VARIABLE_HEADER *) HEADER_ALIGN ((UINTN) VarStoreHeader + VarStoreHeader->Size);\r
}\r
\r
-STATIC\r
BOOLEAN\r
EFIAPI\r
IsValidVariableHeader (\r
}\r
\r
\r
-STATIC\r
VARIABLE_STORE_STATUS\r
EFIAPI\r
GetVariableStoreStatus (\r
}\r
}\r
\r
-STATIC\r
EFI_STATUS\r
CompareWithValidVariable (\r
IN VARIABLE_HEADER *Variable,\r
return EFI_NOT_FOUND;\r
}\r
\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
FindVariable (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN CONST CHAR16 *VariableName,\r
IN CONST EFI_GUID *VendorGuid,\r
OUT VARIABLE_POINTER_TRACK *PtrTrack\r
VARIABLE_POINTER_TRACK Variable;\r
UINTN VarDataSize;\r
EFI_STATUS Status;\r
- EFI_PEI_SERVICES **PeiServices;\r
+ CONST EFI_PEI_SERVICES **PeiServices;\r
\r
PeiServices = GetPeiServicesTablePointer ();\r
- if (VariableName == NULL || VariableGuid == NULL) {\r
+ if (VariableName == NULL || VariableGuid == NULL || DataSize == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
//\r
//\r
VarDataSize = DataSizeOfVariable (Variable.CurrPtr);\r
if (*DataSize >= VarDataSize) {\r
+ //\r
+ // PO-TKW: Address one checking in this place\r
+ //\r
+ if (Data == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
(*PeiServices)->CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr), VarDataSize);\r
\r
if (Attributes != NULL) {\r
VARIABLE_POINTER_TRACK Variable;\r
UINTN VarNameSize;\r
EFI_STATUS Status;\r
- EFI_PEI_SERVICES **PeiServices;\r
+ CONST EFI_PEI_SERVICES **PeiServices;\r
\r
PeiServices = GetPeiServicesTablePointer ();\r
- if (VariableName == NULL) {\r
+ if (VariableName == NULL || VariableGuid == NULL || VariableNameSize == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r