diff options
3 files changed, 5 insertions, 166 deletions
diff --git a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.c b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.c index 6f587291e2..16ca9578ba 100644 --- a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.c +++ b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.c @@ -3248,6 +3248,7 @@ SecureBootCallback ( {
EFI_INPUT_KEY Key;
EFI_STATUS Status;
+ RETURN_STATUS RStatus;
SECUREBOOT_CONFIG_PRIVATE_DATA *Private;
UINTN BufferSize;
SECUREBOOT_CONFIGURATION *IfrNvData;
@@ -3630,12 +3631,9 @@ SecureBootCallback ( case KEY_SECURE_BOOT_SIGNATURE_GUID_DBX:
case KEY_SECURE_BOOT_SIGNATURE_GUID_DBT:
ASSERT (Private->SignatureGUID != NULL);
- Status = StringToGuid (
- IfrNvData->SignatureGuid,
- StrLen (IfrNvData->SignatureGuid),
- Private->SignatureGUID
- );
- if (EFI_ERROR (Status)) {
+ RStatus = StrToGuid (IfrNvData->SignatureGuid, Private->SignatureGUID);
+ if (RETURN_ERROR (RStatus) || (IfrNvData->SignatureGuid[GUID_STRING_LENGTH] != L'\0')) {
+ Status = EFI_INVALID_PARAMETER;
break;
}
diff --git a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.h b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.h index bea9470eae..d438d37e04 100644 --- a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.h +++ b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigImpl.h @@ -475,26 +475,6 @@ Int2OctStr ( IN UINTN OSSizeInBytes
);
-
-/**
- Convert a String to Guid Value.
-
- @param[in] Str Specifies the String to be converted.
- @param[in] StrLen Number of Unicode Characters of String (exclusive \0)
- @param[out] Guid Return the result Guid value.
-
- @retval EFI_SUCCESS The operation is finished successfully.
- @retval EFI_NOT_FOUND Invalid string.
-
-**/
-EFI_STATUS
-StringToGuid (
- IN CHAR16 *Str,
- IN UINTN StrLen,
- OUT EFI_GUID *Guid
- );
-
-
/**
Worker function that prints an EFI_GUID into specified Buffer.
diff --git a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c index a83504e787..038707ca83 100644 --- a/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c +++ b/SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigMisc.c @@ -1,7 +1,7 @@ /** @file
Helper functions for SecureBoot configuration module.
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -152,145 +152,6 @@ Int2OctStr ( return EFI_SUCCESS;
}
-
-
-/**
- Convert a String to Guid Value.
-
- @param[in] Str Specifies the String to be converted.
- @param[in] StrLen Number of Unicode Characters of String (exclusive \0)
- @param[out] Guid Return the result Guid value.
-
- @retval EFI_SUCCESS The operation is finished successfully.
- @retval EFI_NOT_FOUND Invalid string.
-
-**/
-EFI_STATUS
-StringToGuid (
- IN CHAR16 *Str,
- IN UINTN StrLen,
- OUT EFI_GUID *Guid
- )
-{
- CHAR16 *PtrBuffer;
- CHAR16 *PtrPosition;
- UINT16 *Buffer;
- UINTN Data;
- UINTN Index;
- UINT16 Digits[3];
-
- Buffer = (CHAR16 *) AllocateZeroPool (sizeof (CHAR16) * (StrLen + 1));
- if (Buffer == NULL) {
- return EFI_OUT_OF_RESOURCES;
- }
-
- StrCpyS (Buffer, (StrLen + 1), Str);
-
- //
- // Data1
- //
- PtrBuffer = Buffer;
- PtrPosition = PtrBuffer;
- while (*PtrBuffer != L'\0') {
- if (*PtrBuffer == L'-') {
- break;
- }
- PtrBuffer++;
- }
- if (*PtrBuffer == L'\0') {
- FreePool (Buffer);
- return EFI_NOT_FOUND;
- }
-
- *PtrBuffer = L'\0';
- Data = StrHexToUintn (PtrPosition);
- Guid->Data1 = (UINT32)Data;
-
- //
- // Data2
- //
- PtrBuffer++;
- PtrPosition = PtrBuffer;
- while (*PtrBuffer != L'\0') {
- if (*PtrBuffer == L'-') {
- break;
- }
- PtrBuffer++;
- }
- if (*PtrBuffer == L'\0') {
- FreePool (Buffer);
- return EFI_NOT_FOUND;
- }
- *PtrBuffer = L'\0';
- Data = StrHexToUintn (PtrPosition);
- Guid->Data2 = (UINT16)Data;
-
- //
- // Data3
- //
- PtrBuffer++;
- PtrPosition = PtrBuffer;
- while (*PtrBuffer != L'\0') {
- if (*PtrBuffer == L'-') {
- break;
- }
- PtrBuffer++;
- }
- if (*PtrBuffer == L'\0') {
- FreePool (Buffer);
- return EFI_NOT_FOUND;
- }
- *PtrBuffer = L'\0';
- Data = StrHexToUintn (PtrPosition);
- Guid->Data3 = (UINT16)Data;
-
- //
- // Data4[0..1]
- //
- for ( Index = 0 ; Index < 2 ; Index++) {
- PtrBuffer++;
- if ((*PtrBuffer == L'\0') || ( *(PtrBuffer + 1) == L'\0')) {
- FreePool (Buffer);
- return EFI_NOT_FOUND;
- }
- Digits[0] = *PtrBuffer;
- PtrBuffer++;
- Digits[1] = *PtrBuffer;
- Digits[2] = L'\0';
- Data = StrHexToUintn (Digits);
- Guid->Data4[Index] = (UINT8)Data;
- }
-
- //
- // skip the '-'
- //
- PtrBuffer++;
- if ((*PtrBuffer != L'-' ) || ( *PtrBuffer == L'\0')) {
- return EFI_NOT_FOUND;
- }
-
- //
- // Data4[2..7]
- //
- for ( ; Index < 8; Index++) {
- PtrBuffer++;
- if ((*PtrBuffer == L'\0') || ( *(PtrBuffer + 1) == L'\0')) {
- FreePool (Buffer);
- return EFI_NOT_FOUND;
- }
- Digits[0] = *PtrBuffer;
- PtrBuffer++;
- Digits[1] = *PtrBuffer;
- Digits[2] = L'\0';
- Data = StrHexToUintn (Digits);
- Guid->Data4[Index] = (UINT8)Data;
- }
-
- FreePool (Buffer);
-
- return EFI_SUCCESS;
-}
-
/**
Worker function that prints an EFI_GUID into specified Buffer.
|