From e883479f35644d17db7efed710657c8543cfcb68 Mon Sep 17 00:00:00 2001 From: Gary Lin Date: Fri, 7 Apr 2017 12:32:24 +0800 Subject: Cryptlib: amend the headers and fix signness - Declare some functions in the proper headers + We missed them for a long time... - Cast offsetof to UINTN + The original casting triggers the gcc warning since int can not present the offset for the 64bit machines. - Cast the "char" array to "CHAR8 *" to avoid the gcc warnings - Implement atoi correctly Signed-off-by: Gary Lin --- Cryptlib/SysCall/BaseStrings.c | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'Cryptlib/SysCall/BaseStrings.c') diff --git a/Cryptlib/SysCall/BaseStrings.c b/Cryptlib/SysCall/BaseStrings.c index 0e6de378..990037d1 100644 --- a/Cryptlib/SysCall/BaseStrings.c +++ b/Cryptlib/SysCall/BaseStrings.c @@ -1,9 +1,9 @@ #include -CHAR8 * -AsciiStrCat(CHAR8 *Destination, CHAR8 *Source) +char * +AsciiStrCat(char *Destination, char *Source) { - UINTN dest_len = strlena(Destination); + UINTN dest_len = strlena((CHAR8 *)Destination); UINTN i; for (i = 0; Source[i] != '\0'; i++) @@ -25,8 +25,8 @@ AsciiStrCpy(CHAR8 *Destination, CHAR8 *Source) return Destination; } -CHAR8 * -AsciiStrnCpy(CHAR8 *Destination, CHAR8 *Source, UINTN count) +char * +AsciiStrnCpy(char *Destination, char *Source, UINTN count) { UINTN i; @@ -64,4 +64,32 @@ AsciiStrSize(CHAR8 *string) return strlena(string) + 1; } +/* Based on AsciiStrDecimalToUintnS() in edk2 + * MdePkg/Library/BaseLib/SafeString.c */ +UINTN +AsciiStrDecimalToUintn(const char *String) +{ + UINTN Result; + + if (String == NULL) + return 0; + + /* Ignore the pad spaces (space or tab) */ + while ((*String == ' ') || (*String == '\t')) { + String++; + } + /* Ignore leading Zeros after the spaces */ + while (*String == '0') { + String++; + } + + Result = 0; + + while (*String >= '0' && *String <= '9') { + Result = Result * 10 + (*String - '0'); + String++; + } + + return Result; +} -- cgit v1.2.3