summaryrefslogtreecommitdiff
path: root/Cryptlib/SysCall
diff options
context:
space:
mode:
authorGary Lin <glin@suse.com>2017-04-07 12:32:24 +0800
committerPeter Jones <pjones@redhat.com>2017-04-11 10:42:19 -0400
commite883479f35644d17db7efed710657c8543cfcb68 (patch)
tree0d26338cea50d49c95ef5af10785b23c325eebde /Cryptlib/SysCall
parent97469449fda5ba933a64280917e776487301a127 (diff)
downloadefi-boot-shim-e883479f35644d17db7efed710657c8543cfcb68.tar.gz
efi-boot-shim-e883479f35644d17db7efed710657c8543cfcb68.zip
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 <glin@suse.com>
Diffstat (limited to 'Cryptlib/SysCall')
-rw-r--r--Cryptlib/SysCall/BaseStrings.c38
1 files changed, 33 insertions, 5 deletions
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 <CrtLibSupport.h>
-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;
+}