\r
@retval EFI_SUCCESS The hexadecimal string is converted into a\r
binary encoded buffer.\r
+ @retval EFI_INVALID_PARAMETER Invalid hex encoding found in HexStr.\r
@retval EFI_BUFFER_TOO_SMALL The binary buffer is too small to hold the\r
converted data.\r
**/\r
\r
Length = AsciiStrLen (HexStr);\r
\r
+ //\r
+ // Reject an empty hex string; reject a stray nibble.\r
+ //\r
+ if (Length == 0 || Length % 2 != 0) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
for (Index = 0; Index < Length; Index ++) {\r
TemStr[0] = HexStr[Index];\r
Digit = (UINT8) AsciiStrHexToUint64 (TemStr);\r
if (Digit == 0 && TemStr[0] != '0') {\r
//\r
- // Invalid Lun Char.\r
+ // Invalid Hex Char.\r
//\r
- break;\r
+ return EFI_INVALID_PARAMETER;\r
}\r
if ((Index & 1) == 0) {\r
BinBuffer [Index/2] = Digit;\r