summaryrefslogtreecommitdiff
path: root/Board/EM/BlockS3Var
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Board/EM/BlockS3Var
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Board/EM/BlockS3Var')
-rw-r--r--Board/EM/BlockS3Var/BlockS3Var.c179
-rw-r--r--Board/EM/BlockS3Var/BlockS3Var.chmbin0 -> 29677 bytes
-rw-r--r--Board/EM/BlockS3Var/BlockS3Var.cif11
-rw-r--r--Board/EM/BlockS3Var/BlockS3Var.mak72
-rw-r--r--Board/EM/BlockS3Var/BlockS3Var.sdl29
5 files changed, 291 insertions, 0 deletions
diff --git a/Board/EM/BlockS3Var/BlockS3Var.c b/Board/EM/BlockS3Var/BlockS3Var.c
new file mode 100644
index 0000000..2d1e903
--- /dev/null
+++ b/Board/EM/BlockS3Var/BlockS3Var.c
@@ -0,0 +1,179 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2015, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/BlockS3Var/BlockS3Var.c 1 6/18/15 4:02a Calvinchen $
+//
+// $Revision: 1 $
+//
+// $Date: 6/18/15 4:02a $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/BlockS3Var/BlockS3Var.c $
+//
+// 1 6/18/15 4:02a Calvinchen
+// [TAG] EIP224171
+// [Category] New Feature
+// [Description] Initial check-in for New Security Vulnerabilities :
+// Intel-TA-201505-001
+// [Files] BlockS3Var.cif
+// BlockS3Var.chm
+// BlockS3Var.sdl
+// BlockS3Var.mak
+// BlockS3Var.c
+//
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: BlockedS3Var.C
+//
+// Description: This file contains code for blocking Variables at runtime.
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+
+//----------------------------------------------------------------------------
+// Include(s)
+//----------------------------------------------------------------------------
+
+
+#include <AmiDxeLib.h>
+#include <AmiCspLib.h>
+#include <BlockedS3Var.h>
+
+//----------------------------------------------------------------------------
+// Constant, Macro and Type Definition(s)
+//----------------------------------------------------------------------------
+// Constant Definition(s)
+#define BDS_CONNECT_DRIVERS_PROTOCOL_GUID \
+ { 0x3aa83745, 0x9454, 0x4f7a, { 0xa7, 0xc0, 0x90, 0xdb, 0xd0, 0x2f, 0xab, 0x8e } }
+
+// Type Definition(s)
+typedef struct {
+ CHAR16 *Name;
+ EFI_GUID Guid;
+} VAR_STRUCT;
+
+// Function Prototype(s)
+VOID BdsEvtFunc (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+);
+
+//----------------------------------------------------------------------------
+// Variable and External Declaration(s)
+//----------------------------------------------------------------------------
+// Variable Declaration(s)
+VAR_STRUCT gBlockedS3VarList[] = { BLOCKED_S3_VAR_ELINK
+ {NULL, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }}};
+static BOOLEAN gInitializationCompleted = FALSE;
+static BOOLEAN gEndOfDxe = FALSE;
+static EFI_GUID gBdsConnectDriversProtocolGuid = BDS_CONNECT_DRIVERS_PROTOCOL_GUID;
+
+// External Declaration(s)
+extern EFI_BOOT_SERVICES *pBS;
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: SetVariableS3Hook
+//
+// Description: This function checks the input Variable whether it needs to
+// be blocked or not.
+//
+// Input: VariableName - Pointer to Variable Name in Unicode
+// VendorGuid - Pointer to Variable GUID
+// Attributes - Attributes of the Variable
+// DataSize - Size of the Variable
+// Data - Pointer to memory where Variable data is stored
+//
+// Output: EFI_STATUS
+// EFI_UNSUPPORTED - The Variable isn't found.
+// EFI_WRITE_PROTECTED - The Variable is found.
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS SetVariableS3Hook (
+ IN CHAR16 *VariableName,
+ IN EFI_GUID *VendorGuid,
+ IN UINT32 Attributes,
+ IN UINTN DataSize,
+ IN VOID *Data )
+{
+ EFI_STATUS Status;
+ EFI_EVENT BdsEvt;
+ VOID *Registration = NULL;
+ UINT32 i;
+
+ if (gBlockedS3VarList[0].Name == NULL) return EFI_UNSUPPORTED; // no Variable needs to be checked.
+
+ if (!gInitializationCompleted) {
+ gInitializationCompleted = TRUE;
+ if (!pSmst) {
+ Status = pBS->CreateEvent(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, BdsEvtFunc, NULL, &BdsEvt);
+ if (EFI_ERROR(Status)) {
+ TRACE((TRACE_ALWAYS,"Unable to create BDS event\n"));
+ return Status;
+ }
+ pBS->RegisterProtocolNotify (\
+ &gBdsConnectDriversProtocolGuid, BdsEvt, &Registration);
+ }
+ }
+
+ if (gEndOfDxe || pSmst) {
+ for (i = 0; gBlockedS3VarList[i].Name != NULL; i++) {
+ if (!Wcscmp(VariableName, gBlockedS3VarList[i].Name) && !guidcmp(VendorGuid, &gBlockedS3VarList[i].Guid)) {
+ return EFI_WRITE_PROTECTED;
+ }
+ }
+ }
+
+ return EFI_UNSUPPORTED;
+}
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+//
+// Procedure: BdsEvtFunc
+//
+// Description: This function is called when BDS is ready to connect drivers.
+//
+// Input: Event - Event of callback
+// Context - Context of callback.
+//
+// Output: None
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+VOID
+BdsEvtFunc (
+ IN EFI_EVENT Event,
+ IN VOID *Context )
+{
+ gEndOfDxe = TRUE;
+}
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2015, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//********************************************************************** \ No newline at end of file
diff --git a/Board/EM/BlockS3Var/BlockS3Var.chm b/Board/EM/BlockS3Var/BlockS3Var.chm
new file mode 100644
index 0000000..64f8113
--- /dev/null
+++ b/Board/EM/BlockS3Var/BlockS3Var.chm
Binary files differ
diff --git a/Board/EM/BlockS3Var/BlockS3Var.cif b/Board/EM/BlockS3Var/BlockS3Var.cif
new file mode 100644
index 0000000..0210efc
--- /dev/null
+++ b/Board/EM/BlockS3Var/BlockS3Var.cif
@@ -0,0 +1,11 @@
+<component>
+ name = "Block S3 Variable"
+ category = eModule
+ LocalRoot = "Board\EM\BlockS3Var\"
+ RefName = "BlockS3Var"
+[files]
+"BlockS3Var.chm"
+"BlockS3Var.sdl"
+"BlockS3Var.mak"
+"BlockS3Var.c"
+<endComponent>
diff --git a/Board/EM/BlockS3Var/BlockS3Var.mak b/Board/EM/BlockS3Var/BlockS3Var.mak
new file mode 100644
index 0000000..e273548
--- /dev/null
+++ b/Board/EM/BlockS3Var/BlockS3Var.mak
@@ -0,0 +1,72 @@
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2015, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************
+
+#*************************************************************************
+# $Header: /Alaska/SOURCE/Modules/BlockS3Var/BlockS3Var.mak 1 6/18/15 4:02a Calvinchen $
+#
+# $Revision: 1 $
+#
+# $Date: 6/18/15 4:02a $
+#*************************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/BlockS3Var/BlockS3Var.mak $
+#
+# 1 6/18/15 4:02a Calvinchen
+# [TAG] EIP224171
+# [Category] New Feature
+# [Description] Initial check-in for New Security Vulnerabilities :
+# Intel-TA-201505-001
+# [Files] BlockS3Var.cif
+# BlockS3Var.chm
+# BlockS3Var.sdl
+# BlockS3Var.mak
+# BlockS3Var.c
+#
+#*************************************************************************
+#<AMI_FHDR_START>
+#
+# Name: BlockS3Var.mak
+#
+# Description: This make file builds Blocked S3 Variable eModule
+#
+#<AMI_FHDR_END>
+#*************************************************************************
+Prepare : $(BUILD_DIR)/BlockedS3Var.h
+
+$(BUILD_DIR)/BlockedS3Var.h : $(BUILD_DIR)/token.mak
+ $(ECHO) \
+ #define BLOCKED_S3_VAR_ELINK $(BLOCKED_S3_VAR_LIST)$(EOL)\
+> $(BUILD_DIR)/BlockedS3Var.h
+
+NvramDxeBin : $(BUILD_DIR)\BlockS3Var.obj
+
+BLOCKED_S3_VAR_CFLAGS=$(CFLAGS) /D\"BLOCKED_S3_VAR_LIST=$(BLOCKED_S3_VAR_LIST)\"
+
+$(BUILD_DIR)\BlockS3Var.obj : $(BLOCK_S3_VAR_DIR)\BlockS3Var.c
+ $(CC) $(BLOCKED_S3_VAR_CFLAGS) /Fo$(BUILD_DIR)\ $(BLOCK_S3_VAR_DIR)\BlockS3Var.c
+
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2015, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#********************************************************************** \ No newline at end of file
diff --git a/Board/EM/BlockS3Var/BlockS3Var.sdl b/Board/EM/BlockS3Var/BlockS3Var.sdl
new file mode 100644
index 0000000..6bc1e88
--- /dev/null
+++ b/Board/EM/BlockS3Var/BlockS3Var.sdl
@@ -0,0 +1,29 @@
+TOKEN
+ Name = "BlockS3Var_SUPPORT"
+ Value = "1"
+ Help = "Main switch to enable BlockS3Var support in Project"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+PATH
+ Name = "BLOCK_S3_VAR_DIR"
+End
+
+MODULE
+ Help = "Includes BlockS3Var.mak to Project"
+ File = "BlockS3Var.mak"
+End
+
+ELINK
+ Name = "BLOCKED_S3_VAR_LIST"
+ InvokeOrder = ReplaceParent
+End
+
+ELINK
+ Name = "SetVariableS3Hook,"
+ Parent = "SetVariableHook"
+ InvokeOrder = AfterParent
+End