mirror of https://github.com/acidanthera/audk.git
SecurityPkg/SecureBootConfigDxe: Use StrToGuid in BaseLib
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
787f6744e7
commit
2a08577480
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue