summaryrefslogtreecommitdiff
path: root/Cryptlib
diff options
context:
space:
mode:
authorSteve McIntyre <steve@einval.com>2021-03-23 23:49:46 +0000
committerSteve McIntyre <steve@einval.com>2021-03-23 23:49:46 +0000
commit1251a7ba86fc40a6aad8b4fecdbca2b61808d9fa (patch)
tree2125fda549aaca55cb49a48d54be77dec7fbf3df /Cryptlib
parent85b409232ce89b34626df9d72abedf5d4f5ccef6 (diff)
parent031e5cce385d3f96b1caa1d53495332a7eb03749 (diff)
downloadefi-boot-shim-debian/15.3-1.tar.gz
efi-boot-shim-debian/15.3-1.zip
Update upstream source from tag 'upstream/15.3'debian/15.3-1
Update to upstream version '15.3' with Debian dir 1b484f1c1ac270604a5a1451b34de4b0865c6211
Diffstat (limited to 'Cryptlib')
-rw-r--r--Cryptlib/Include/OpenSslSupport.h163
-rw-r--r--Cryptlib/Include/ctype.h16
-rw-r--r--Cryptlib/Include/openssl/bio.h9
-rw-r--r--Cryptlib/Include/openssl/crypto.h1
-rw-r--r--Cryptlib/Include/openssl/err.h4
-rw-r--r--Cryptlib/Include/stdarg.h16
-rw-r--r--Cryptlib/Include/stddef.h15
-rw-r--r--Cryptlib/Include/stdlib.h16
-rw-r--r--Cryptlib/Include/string.h16
-rw-r--r--Cryptlib/Include/strings.h15
-rw-r--r--Cryptlib/InternalCryptLib.h2
-rw-r--r--Cryptlib/Library/BaseLib.h26
-rw-r--r--Cryptlib/Makefile40
-rw-r--r--Cryptlib/OpenSSL/Makefile867
-rw-r--r--Cryptlib/OpenSSL/crypto/asn1/asn_mime.c4
-rw-r--r--Cryptlib/OpenSSL/crypto/asn1/t_req.c5
-rw-r--r--Cryptlib/OpenSSL/crypto/bio/b_print.c76
-rw-r--r--Cryptlib/OpenSSL/crypto/bn/bn_lib.c3
-rw-r--r--Cryptlib/OpenSSL/crypto/conf/conf_lib.c3
-rw-r--r--Cryptlib/OpenSSL/crypto/cryptlib.c4
-rw-r--r--Cryptlib/OpenSSL/crypto/cryptlib.h2
-rw-r--r--Cryptlib/OpenSSL/crypto/err/err.c12
-rw-r--r--Cryptlib/OpenSSL/crypto/mem_dbg.c5
-rw-r--r--Cryptlib/OpenSSL/crypto/pkcs7/pk7_doit.c2
-rw-r--r--Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c3
-rw-r--r--Cryptlib/OpenSSL/crypto/rsa/rsa_ameth.c2
-rw-r--r--Cryptlib/OpenSSL/crypto/x509/x509_trs.c8
-rw-r--r--Cryptlib/OpenSSL/crypto/x509/x509_vfy.c3
-rw-r--r--Cryptlib/SysCall/BaseStrings.c48
-rw-r--r--Cryptlib/SysCall/CrtWrapper.c82
-rw-r--r--Cryptlib/SysCall/memset.c40
31 files changed, 617 insertions, 891 deletions
diff --git a/Cryptlib/Include/OpenSslSupport.h b/Cryptlib/Include/OpenSslSupport.h
index b38043cb..b97149e2 100644
--- a/Cryptlib/Include/OpenSslSupport.h
+++ b/Cryptlib/Include/OpenSslSupport.h
@@ -15,6 +15,30 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#ifndef __OPEN_SSL_SUPPORT_H__
#define __OPEN_SSL_SUPPORT_H__
+#if defined(__x86_64__)
+/* shim.h will check if the compiler is new enough in some other CU */
+
+#if !defined(GNU_EFI_USE_EXTERNAL_STDARG)
+#define GNU_EFI_USE_EXTERNAL_STDARG
+#endif
+
+#if !defined(GNU_EFI_USE_MS_ABI)
+#define GNU_EFI_USE_MS_ABI
+#endif
+
+#ifdef NO_BUILTIN_VA_FUNCS
+#undef NO_BUILTIN_VA_FUNCS
+#endif
+#endif
+
+/*
+ * Include stddef.h to avoid redefining "offsetof"
+ */
+#include <stddef.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <string.h>
+
#include <efi.h>
#include <efilib.h>
#include "Base.h"
@@ -23,11 +47,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "Library/MemoryAllocationLib.h"
#include "Library/DebugLib.h"
-/*
- * Include stddef.h to avoid redefining "offsetof"
- */
-#include <stddef.h>
-
#define CONST const
//
@@ -62,113 +81,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
typedef VOID *FILE;
//
-// Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h
-//
-#if !defined(__CC_ARM) || defined(_STDARG_H) // if va_list is not already defined
-/*
- * These are now unconditionally #defined by GNU_EFI's efistdarg.h,
- * so we should #undef them here before providing a new definition.
- */
-#undef va_arg
-#undef va_start
-#undef va_end
-
-#define va_list VA_LIST
-#define va_arg VA_ARG
-#define va_start VA_START
-#define va_end VA_END
-
-# if !defined(NO_BUILTIN_VA_FUNCS)
-
-typedef __builtin_va_list VA_LIST;
-
-#define VA_START(Marker, Parameter) __builtin_va_start (Marker, Parameter)
-
-#define VA_ARG(Marker, TYPE) ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE)))
-
-#define VA_END(Marker) __builtin_va_end (Marker)
-
-#define VA_COPY(Dest, Start) __builtin_va_copy (Dest, Start)
-
-# else
-
-#define _INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1))
-///
-/// Variable used to traverse the list of arguments. This type can vary by
-/// implementation and could be an array or structure.
-///
-typedef CHAR8 *VA_LIST;
-
-/**
- Retrieves a pointer to the beginning of a variable argument list, based on
- the name of the parameter that immediately precedes the variable argument list.
-
- This function initializes Marker to point to the beginning of the variable
- argument list that immediately follows Parameter. The method for computing the
- pointer to the next argument in the argument list is CPU-specific following the
- EFIAPI ABI.
-
- @param Marker The VA_LIST used to traverse the list of arguments.
- @param Parameter The name of the parameter that immediately precedes
- the variable argument list.
-
- @return A pointer to the beginning of a variable argument list.
-
-**/
-#define VA_START(Marker, Parameter) (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter)))
-
-/**
- Returns an argument of a specified type from a variable argument list and updates
- the pointer to the variable argument list to point to the next argument.
-
- This function returns an argument of the type specified by TYPE from the beginning
- of the variable argument list specified by Marker. Marker is then updated to point
- to the next argument in the variable argument list. The method for computing the
- pointer to the next argument in the argument list is CPU-specific following the EFIAPI ABI.
-
- @param Marker VA_LIST used to traverse the list of arguments.
- @param TYPE The type of argument to retrieve from the beginning
- of the variable argument list.
-
- @return An argument of the type specified by TYPE.
-
-**/
-#define VA_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE)))
-
-/**
- Terminates the use of a variable argument list.
-
- This function initializes Marker so it can no longer be used with VA_ARG().
- After this macro is used, the only way to access the variable argument list is
- by using VA_START() again.
-
- @param Marker VA_LIST used to traverse the list of arguments.
-
-**/
-#define VA_END(Marker) (Marker = (VA_LIST) 0)
-
-/**
- Initializes a VA_LIST as a copy of an existing VA_LIST.
-
- This macro initializes Dest as a copy of Start, as if the VA_START macro had been applied to Dest
- followed by the same sequence of uses of the VA_ARG macro as had previously been used to reach
- the present state of Start.
-
- @param Dest VA_LIST used to traverse the list of arguments.
- @param Start VA_LIST used to traverse the list of arguments.
-
-**/
-#define VA_COPY(Dest, Start) ((void)((Dest) = (Start)))
-
-# endif
-
-#else // __CC_ARM
-#define va_start(Marker, Parameter) __va_start(Marker, Parameter)
-#define va_arg(Marker, TYPE) __va_arg(Marker, TYPE)
-#define va_end(Marker) ((void)0)
-#endif
-
-//
// #defines from EFI Application Toolkit required to buiild Open SSL
//
#define ENOMEM 12 /* Cannot allocate memory */
@@ -285,34 +197,21 @@ extern int errno;
void *malloc (size_t);
void *realloc (void *, size_t);
void free (void *);
-int isdigit (int);
-int isspace (int);
-int tolower (int);
-int isupper (int);
-int isxdigit (int);
-int isalnum (int);
void *memcpy (void *, const void *, size_t);
void *memset (void *, int, size_t);
void *memchr (const void *, int, size_t);
int memcmp (const void *, const void *, size_t);
void *memmove (void *, const void *, size_t);
-int strcmp (const char *, const char *);
-int strncmp (const char *, const char *, size_t);
char *strcpy (char *, const char *);
char *strncpy (char *, const char *, size_t);
-size_t strlen (const char *);
char *strcat (char *, const char *);
char *strchr (const char *, int);
int strcasecmp (const char *, const char *);
int strncasecmp (const char *, const char *, size_t);
char *strncpy (char *, const char *, size_t);
-int strncmp (const char *, const char *, size_t);
-char *strrchr (const char *, int);
unsigned long strtoul (const char *, char **, int);
long strtol (const char *, char **, int);
char *strerror (int);
-size_t strspn (const char *, const char *);
-size_t strcspn (const char *, const char *);
int printf (const char *, ...);
int sscanf (const char *, const char *, ...);
int open (const char *, int, ...);
@@ -328,7 +227,7 @@ size_t fwrite (const void *, size_t, size_t, FILE *);
char *fgets (char *, int, FILE *);
int fputs (const char *, FILE *);
int fprintf (FILE *, const char *, ...);
-int vfprintf (FILE *, const char *, VA_LIST);
+int vfprintf (FILE *, const char *, ms_va_list);
int fflush (FILE *);
int fclose (FILE *);
DIR *opendir (const char *);
@@ -348,7 +247,6 @@ gid_t getegid (void);
void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
char *getenv (const char *);
void exit (int);
-void abort (void);
__sighandler_t *signal (int, __sighandler_t *);
//
@@ -358,7 +256,7 @@ extern FILE *stderr;
extern FILE *stdin;
extern FILE *stdout;
-#define AsciiStrLen(x) strlena(x)
+#define AsciiStrLen(x) strlen(x)
#define AsciiStrnCmp(s1, s2, len) strncmpa((CHAR8 *)s1, (CHAR8 *)s2, len)
//
@@ -369,17 +267,10 @@ extern FILE *stdout;
#define memchr(buf,ch,count) ScanMem8((CHAR8 *)buf,(UINTN)(count),ch)
#define memcmp(buf1,buf2,count) (int)(CompareMem(buf1,buf2,(UINTN)(count)))
#define memmove(dest,source,count) CopyMem(dest,source,(UINTN)(count))
-#define strlen(str) (size_t)(AsciiStrLen((CHAR8 *)str))
-#define strcpy(strDest,strSource) AsciiStrCpy(strDest,strSource)
-#define strncpy(strDest,strSource,count) AsciiStrnCpy(strDest,strSource,(UINTN)count)
-#define strcat(strDest,strSource) AsciiStrCat(strDest,strSource)
-#define strchr(str,ch) (char *)(ScanMem8((CHAR8 *)str,AsciiStrSize((CHAR8 *)str),ch))
-#define strncmp(string1,string2,count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count)))
#define localtime(timer) NULL
#define assert(expression)
-#define atoi(nptr) AsciiStrDecimalToUintn(nptr)
+#define atoi(nptr) AsciiStrDecimalToUintn((const CHAR8 *)nptr)
#define gettimeofday(tvp,tz) do { (tvp)->tv_sec = time(NULL); (tvp)->tv_usec = 0; } while (0)
#define gmtime_r(timer,result) (result = NULL)
-#define abort()
#endif
diff --git a/Cryptlib/Include/ctype.h b/Cryptlib/Include/ctype.h
deleted file mode 100644
index ee07f6bc..00000000
--- a/Cryptlib/Include/ctype.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/** @file
- Include file to support building OpenSSL Crypto Library.
-
-Copyright (c) 2010, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <OpenSslSupport.h>
-
diff --git a/Cryptlib/Include/openssl/bio.h b/Cryptlib/Include/openssl/bio.h
index 8f2438cd..da8c6580 100644
--- a/Cryptlib/Include/openssl/bio.h
+++ b/Cryptlib/Include/openssl/bio.h
@@ -59,6 +59,7 @@
#ifndef HEADER_BIO_H
# define HEADER_BIO_H
+# include <OpenSslSupport.h>
# include <openssl/e_os2.h>
# ifndef OPENSSL_NO_FP_API
@@ -791,13 +792,13 @@ void BIO_copy_next_retry(BIO *b);
# else
# define __bio_h__attr__(x)
# endif
-int BIO_printf(BIO *bio, const char *format, ...)
+int EFIAPI BIO_printf(BIO *bio, const char *format, ...)
__bio_h__attr__((__format__(__printf__, 2, 3)));
-int BIO_vprintf(BIO *bio, const char *format, va_list args)
+int EFIAPI BIO_vprintf(BIO *bio, const char *format, ms_va_list args)
__bio_h__attr__((__format__(__printf__, 2, 0)));
-int BIO_snprintf(char *buf, size_t n, const char *format, ...)
+int EFIAPI BIO_snprintf(char *buf, size_t n, const char *format, ...)
__bio_h__attr__((__format__(__printf__, 3, 4)));
-int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
+int EFIAPI BIO_vsnprintf(char *buf, size_t n, const char *format, ms_va_list args)
__bio_h__attr__((__format__(__printf__, 3, 0)));
# undef __bio_h__attr__
diff --git a/Cryptlib/Include/openssl/crypto.h b/Cryptlib/Include/openssl/crypto.h
index bea4ca19..e201a123 100644
--- a/Cryptlib/Include/openssl/crypto.h
+++ b/Cryptlib/Include/openssl/crypto.h
@@ -117,6 +117,7 @@
#ifndef HEADER_CRYPTO_H
# define HEADER_CRYPTO_H
+# include <string.h>
# include <stdlib.h>
# include <openssl/e_os2.h>
diff --git a/Cryptlib/Include/openssl/err.h b/Cryptlib/Include/openssl/err.h
index 04c6cfc6..5a019808 100644
--- a/Cryptlib/Include/openssl/err.h
+++ b/Cryptlib/Include/openssl/err.h
@@ -344,8 +344,8 @@ void ERR_print_errors_fp(FILE *fp);
# ifndef OPENSSL_NO_BIO
void ERR_print_errors(BIO *bp);
# endif
-void ERR_add_error_data(int num, ...);
-void ERR_add_error_vdata(int num, va_list args);
+void EFIAPI ERR_add_error_data(int num, ...);
+void EFIAPI ERR_add_error_vdata(int num, ms_va_list args);
void ERR_load_strings(int lib, ERR_STRING_DATA str[]);
void ERR_unload_strings(int lib, ERR_STRING_DATA str[]);
void ERR_load_ERR_strings(void);
diff --git a/Cryptlib/Include/stdarg.h b/Cryptlib/Include/stdarg.h
deleted file mode 100644
index ee07f6bc..00000000
--- a/Cryptlib/Include/stdarg.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/** @file
- Include file to support building OpenSSL Crypto Library.
-
-Copyright (c) 2010, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <OpenSslSupport.h>
-
diff --git a/Cryptlib/Include/stddef.h b/Cryptlib/Include/stddef.h
deleted file mode 100644
index 8dfc36ff..00000000
--- a/Cryptlib/Include/stddef.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/** @file
- Include file to support building OpenSSL Crypto Library.
-
-Copyright (c) 2010, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <OpenSslSupport.h>
diff --git a/Cryptlib/Include/stdlib.h b/Cryptlib/Include/stdlib.h
deleted file mode 100644
index ee07f6bc..00000000
--- a/Cryptlib/Include/stdlib.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/** @file
- Include file to support building OpenSSL Crypto Library.
-
-Copyright (c) 2010, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <OpenSslSupport.h>
-
diff --git a/Cryptlib/Include/string.h b/Cryptlib/Include/string.h
deleted file mode 100644
index ee07f6bc..00000000
--- a/Cryptlib/Include/string.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/** @file
- Include file to support building OpenSSL Crypto Library.
-
-Copyright (c) 2010, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <OpenSslSupport.h>
-
diff --git a/Cryptlib/Include/strings.h b/Cryptlib/Include/strings.h
deleted file mode 100644
index 8dfc36ff..00000000
--- a/Cryptlib/Include/strings.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/** @file
- Include file to support building OpenSSL Crypto Library.
-
-Copyright (c) 2010, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include <OpenSslSupport.h>
diff --git a/Cryptlib/InternalCryptLib.h b/Cryptlib/InternalCryptLib.h
index e9a4c20a..dc1a95e6 100644
--- a/Cryptlib/InternalCryptLib.h
+++ b/Cryptlib/InternalCryptLib.h
@@ -15,6 +15,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#ifndef __INTERNAL_CRYPT_LIB_H__
#define __INTERNAL_CRYPT_LIB_H__
+#include <stdarg.h>
+
#include "Library/BaseLib.h"
#include "Library/BaseMemoryLib.h"
#include "Library/MemoryAllocationLib.h"
diff --git a/Cryptlib/Library/BaseLib.h b/Cryptlib/Library/BaseLib.h
index 5d326844..94b25c93 100644
--- a/Cryptlib/Library/BaseLib.h
+++ b/Cryptlib/Library/BaseLib.h
@@ -1,9 +1,25 @@
+#if defined(__x86_64__)
+/* shim.h will check if the compiler is new enough in some other CU */
+
+#if !defined(GNU_EFI_USE_EXTERNAL_STDARG)
+#define GNU_EFI_USE_EXTERNAL_STDARG
+#endif
+
+#if !defined(GNU_EFI_USE_MS_ABI)
+#define GNU_EFI_USE_MS_ABI
+#endif
+
+#ifdef NO_BUILTIN_VA_FUNCS
+#undef NO_BUILTIN_VA_FUNCS
+#endif
+#endif
+
#include <efi.h>
#include <efilib.h>
UINT32 WriteUnaligned32 (UINT32 *Buffer, UINT32 Value);
-UINTN AsciiStrSize (CHAR8 *string);
-char *AsciiStrnCpy(char *Destination, char *Source, UINTN count);
-char *AsciiStrCat(char *Destination, char *Source);
-CHAR8 *AsciiStrCpy(CHAR8 *Destination, CHAR8 *Source);
-UINTN AsciiStrDecimalToUintn(const char *String);
+UINTN AsciiStrSize (const CHAR8 *string);
+CHAR8 *AsciiStrnCpy(CHAR8 *Destination, const CHAR8 *Source, UINTN count);
+CHAR8 *AsciiStrCat(CHAR8 *Destination, const CHAR8 *Source);
+CHAR8 *AsciiStrCpy(CHAR8 *Destination, const CHAR8 *Source);
+UINTN AsciiStrDecimalToUintn(const CHAR8 *String);
diff --git a/Cryptlib/Makefile b/Cryptlib/Makefile
index 18a33b19..89fd5cdc 100644
--- a/Cryptlib/Makefile
+++ b/Cryptlib/Makefile
@@ -1,27 +1,42 @@
+ifneq ($(CCACHE_DISABLE),)
+export CCACHE_DISABLE
+endif
+
+CRYPTDIR = $(TOPDIR)/Cryptlib
+
+FEATUREFLAGS += -nostdinc
-EFI_INCLUDES = -I$(TOPDIR)/Include -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol
+INCLUDES = -I$(CRYPTDIR) -I$(CRYPTDIR)/Include \
+ $(EFI_INCLUDES) \
+ -isystem $(TOPDIR)/include/system \
+ -isystem $(shell $(CC) -print-file-name=include)
-CFLAGS = -ggdb $(OPTIMIZATIONS) -I$(TOPDIR) -iquote $(TOPDIR) -fno-stack-protector -fno-strict-aliasing -fpic -fshort-wchar \
- -Wall $(EFI_INCLUDES) -std=gnu89 \
- -ffreestanding -I$(shell $(CC) -print-file-name=include)
+WARNFLAGS += -Wno-unused-parameter
+
+CFLAGS = $(FEATUREFLAGS) \
+ $(OPTIMIZATIONS) \
+ $(WARNFLAGS) \
+ $(WERRFLAGS) \
+ $(INCLUDES) \
+ $(DEFINES)
CLANG_BUGS = $(if $(findstring gcc,$(CC)),-maccumulate-outgoing-args,)
ifeq ($(ARCH),x86_64)
- CFLAGS += -mno-mmx -mno-sse -mno-red-zone -nostdinc $(CLANG_BUGS) \
- -m64 -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI \
- -DNO_BUILTIN_VA_FUNCS -DMDE_CPU_X64
+FEATUREFLAGS += -m64 -mno-mmx -mno-sse -mno-red-zone $(CLANG_BUGS)
+DEFINES += -DMDE_CPU_X64
endif
ifeq ($(ARCH),ia32)
- CFLAGS += -mno-mmx -mno-sse -mno-red-zone -nostdinc \
- $(CLANG_BUGS) -m32 -DMDE_CPU_IA32
+FEATUREFLAGS += -m32 -mno-mmx -mno-sse -mno-red-zone $(CLANG_BUGS)
+DEFINES += -DMDE_CPU_IA32
endif
ifeq ($(ARCH),aarch64)
- CFLAGS += -DMDE_CPU_AARCH64
+DEFINES += -DMDE_CPU_AARCH64
endif
ifeq ($(ARCH),arm)
- CFLAGS += -DMDE_CPU_ARM
+DEFINES += -DMDE_CPU_ARM
endif
+
LDFLAGS = -nostdlib -znocombreloc
TARGET = libcryptlib.a
@@ -49,8 +64,7 @@ OBJS = Hash/CryptMd4Null.o \
SysCall/CrtWrapper.o \
SysCall/TimerWrapper.o \
SysCall/BaseMemAllocation.o \
- SysCall/BaseStrings.o \
- SysCall/memset.o
+ SysCall/BaseStrings.o
all: $(TARGET)
diff --git a/Cryptlib/OpenSSL/Makefile b/Cryptlib/OpenSSL/Makefile
index 9a7697cc..795f471d 100644
--- a/Cryptlib/OpenSSL/Makefile
+++ b/Cryptlib/OpenSSL/Makefile
@@ -1,440 +1,465 @@
+ifneq ($(CCACHE_DISABLE),)
+export CCACHE_DISABLE
+endif
+
+CRYPTDIR = $(TOPDIR)/Cryptlib
+OSSLDIR = $(TOPDIR)/Cryptlib/OpenSSL
+
+DEFINES = -DL_ENDIAN \
+ -D_CRT_SECURE_NO_DEPRECATE \
+ -D_CRT_NONSTDC_NO_DEPRECATE \
+ -DOPENSSL_SMALL_FOOTPRINT \
+ -DPEDANTIC
-EFI_INCLUDES = -I$(TOPDIR)/../Include \
- -I$(EFI_INCLUDE) -I$(EFI_INCLUDE)/$(ARCH) -I$(EFI_INCLUDE)/protocol \
- -I$(TOPDIR)/crypto/asn1 -I$(TOPDIR)/crypto/evp -I$(TOPDIR)/crypto/modes -I$(TOPDIR)/crypto/include
+INCLUDES = -I$(OSSLDIR) -I$(CRYPTDIR) -I$(OSSLDIR)/Include/ \
+ -I$(OSSLDIR)/crypto -I$(CRYPTDIR)/Include $(EFI_INCLUDES) \
+ -I$(OSSLDIR)/crypto/asn1 -I$(OSSLDIR)/crypto/evp \
+ -I$(OSSLDIR)/crypto/modes -I$(OSSLDIR)/crypto/include \
+ -isystem $(TOPDIR)/include/system \
+ -isystem $(shell $(CC) -print-file-name=include)
-CFLAGS = -ggdb $(OPTIMIZATIONS) -I$(TOPDIR) -I$(TOPDIR)/.. -I$(TOPDIR)/../Include/ -I$(TOPDIR)/crypto \
- -fno-stack-protector -fno-strict-aliasing -fpic -fshort-wchar -nostdinc \
- -ffreestanding -std=gnu89 -I$(shell $(CC) -print-file-name=include) \
- -Wall $(EFI_INCLUDES) -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_SMALL_FOOTPRINT -DPEDANTIC
+FEATUREFLAGS += -nostdinc
+
+WARNFLAGS += -Wno-empty-body \
+ -Wno-implicit-fallthrough \
+ $(if $(findstring gcc,$(CC)),-Wno-old-style-declaration) \
+ $(if $(findstring gcc,$(CC)),-Wno-unused-but-set-variable) \
+ -Wno-unused-parameter
+
+CFLAGS = $(FEATUREFLAGS) \
+ $(OPTIMIZATIONS) \
+ $(WARNFLAGS) \
+ $(WERRFLAGS) \
+ $(INCLUDES) \
+ $(DEFINES)
CLANG_BUGS = $(if $(findstring gcc,$(CC)),-maccumulate-outgoing-args,)
ifeq ($(ARCH),x86_64)
- CFLAGS += -mno-mmx -mno-sse -mno-red-zone $(CLANG_BUGS) \
- -m64 -DEFI_FUNCTION_WRAPPER -DGNU_EFI_USE_MS_ABI \
- -UNO_BUILTIN_VA_FUNCS -DMDE_CPU_X64
+FEATUREFLAGS += -m64 -mno-mmx -mno-sse -mno-red-zone $(CLANG_BUGS)
+DEFINES += -DMDE_CPU_X64
endif
ifeq ($(ARCH),ia32)
- CFLAGS += -mno-mmx -mno-sse -mno-red-zone -nostdinc \
- $(CLANG_BUGS) -m32 -DMDE_CPU_IA32
+FEATUREFLAGS += -m32 -mno-mmx -mno-sse -mno-red-zone -nostdinc $(CLANG_BUGS)
+DEFINES += -DMDE_CPU_IA32
endif
ifeq ($(ARCH),aarch64)
- CFLAGS += -O2 -DMDE_CPU_AARCH64
+DEFINES += -DMDE_CPU_AARCH64
endif
ifeq ($(ARCH),arm)
- CFLAGS += -O2 -DMDE_CPU_ARM
+DEFINES += -DMDE_CPU_ARM
endif
+
LDFLAGS = -nostdlib -znocombreloc
TARGET = libopenssl.a
-OBJS = crypto/cryptlib.o \
- crypto/mem.o \
- crypto/mem_clr.o \
- crypto/mem_dbg.o \
- crypto/cversion.o \
- crypto/ex_data.o \
- crypto/cpt_err.o \
- crypto/ebcdic.o \
- crypto/uid.o \
- crypto/o_time.o \
- crypto/o_str.o \
- crypto/o_dir.o \
- crypto/o_fips.o \
- crypto/o_init.o \
- crypto/fips_ers.o \
- crypto/md5/md5_dgst.o \
- crypto/md5/md5_one.o \
- crypto/sha/sha_dgst.o \
- crypto/sha/sha1dgst.o \
- crypto/sha/sha_one.o \
- crypto/sha/sha1_one.o \
- crypto/sha/sha256.o \
- crypto/sha/sha512.o \
- crypto/hmac/hmac.o \
- crypto/hmac/hm_ameth.o \
- crypto/hmac/hm_pmeth.o \
- crypto/rc4/rc4_enc.o \
- crypto/rc4/rc4_skey.o \
- crypto/rc4/rc4_utl.o \
- crypto/aes/aes_misc.o \
- crypto/aes/aes_ecb.o \
- crypto/aes/aes_cfb.o \
- crypto/aes/aes_ofb.o \
- crypto/aes/aes_ctr.o \
- crypto/aes/aes_ige.o \
- crypto/aes/aes_wrap.o \
- crypto/aes/aes_core.o \
- crypto/aes/aes_cbc.o \
- crypto/modes/cbc128.o \
- crypto/modes/ctr128.o \
- crypto/modes/cts128.o \
- crypto/modes/cfb128.o \
- crypto/modes/ofb128.o \
- crypto/modes/gcm128.o \
- crypto/modes/ccm128.o \
- crypto/modes/xts128.o \
- crypto/modes/wrap128.o \
- crypto/bn/bn_add.o \
- crypto/bn/bn_div.o \
- crypto/bn/bn_exp.o \
- crypto/bn/bn_lib.o \
- crypto/bn/bn_ctx.o \
- crypto/bn/bn_mul.o \
- crypto/bn/bn_mod.o \
- crypto/bn/bn_print.o \
- crypto/bn/bn_rand.o \
- crypto/bn/bn_shift.o \
- crypto/bn/bn_word.o \
- crypto/bn/bn_blind.o \
- crypto/bn/bn_kron.o \
- crypto/bn/bn_sqrt.o \
- crypto/bn/bn_gcd.o \
- crypto/bn/bn_prime.o \
- crypto/bn/bn_err.o \
- crypto/bn/bn_sqr.o \
- crypto/bn/bn_asm.o \
- crypto/bn/bn_recp.o \
- crypto/bn/bn_mont.o \
- crypto/bn/bn_mpi.o \
- crypto/bn/bn_exp2.o \
- crypto/bn/bn_gf2m.o \
- crypto/bn/bn_nist.o \
- crypto/bn/bn_depr.o \
- crypto/bn/bn_x931p.o \
- crypto/bn/bn_const.o \
- crypto/rsa/rsa_eay.o \
- crypto/rsa/rsa_gen.o \
- crypto/rsa/rsa_lib.o \
- crypto/rsa/rsa_sign.o \
- crypto/rsa/rsa_saos.o \
- crypto/rsa/rsa_err.o \
- crypto/rsa/rsa_pk1.o \
- crypto/rsa/rsa_ssl.o \
- crypto/rsa/rsa_none.o \
- crypto/rsa/rsa_oaep.o \
- crypto/rsa/rsa_chk.o \
- crypto/rsa/rsa_null.o \
- crypto/rsa/rsa_pss.o \
- crypto/rsa/rsa_x931.o \
- crypto/rsa/rsa_asn1.o \
- crypto/rsa/rsa_depr.o \
- crypto/rsa/rsa_ameth.o \
- crypto/rsa/rsa_prn.o \
- crypto/rsa/rsa_pmeth.o \
- crypto/rsa/rsa_crpt.o \
- crypto/dso/dso_dl.o \
- crypto/dso/dso_dlfcn.o \
- crypto/dso/dso_err.o \
- crypto/dso/dso_lib.o \
- crypto/dso/dso_null.o \
- crypto/dso/dso_openssl.o \
- crypto/dso/dso_win32.o \
- crypto/dso/dso_vms.o \
- crypto/dso/dso_beos.o \
- crypto/dh/dh_asn1.o \
- crypto/dh/dh_gen.o \
- crypto/dh/dh_key.o \
- crypto/dh/dh_lib.o \
- crypto/dh/dh_check.o \
- crypto/dh/dh_err.o \
- crypto/dh/dh_depr.o \
- crypto/dh/dh_ameth.o \
- crypto/dh/dh_pmeth.o \
- crypto/dh/dh_prn.o \
- crypto/dh/dh_rfc5114.o \
- crypto/buffer/buffer.o \
- crypto/buffer/buf_str.o \
- crypto/buffer/buf_err.o \
- crypto/bio/bio_lib.o \
- crypto/bio/bio_cb.o \
- crypto/bio/bio_err.o \
- crypto/bio/bss_mem.o \
- crypto/bio/bss_null.o \
- crypto/bio/bss_fd.o \
- crypto/bio/bss_file.o \
- crypto/bio/bss_sock.o \
- crypto/bio/bss_conn.o \
- crypto/bio/bf_null.o \
- crypto/bio/bf_buff.o \
- crypto/bio/b_dump.o \
- crypto/bio/b_print.o \
- crypto/bio/b_sock.o \
- crypto/bio/bss_acpt.o \
- crypto/bio/bf_nbio.o \
- crypto/bio/bss_log.o \
- crypto/bio/bss_bio.o \
- crypto/bio/bss_dgram.o \
- crypto/stack/stack.o \
- crypto/lhash/lhash.o \
- crypto/lhash/lh_stats.o \
- crypto/rand/md_rand.o \
- crypto/rand/randfile.o \
- crypto/rand/rand_lib.o \
- crypto/rand/rand_err.o \
- crypto/rand/rand_unix.o \
- crypto/err/err.o \
- crypto/err/err_all.o \
- crypto/err/err_prn.o \
- crypto/objects/o_names.o \
- crypto/objects/obj_dat.o \
- crypto/objects/obj_lib.o \
- crypto/objects/obj_err.o \
- crypto/objects/obj_xref.o \
- crypto/evp/encode.o \
- crypto/evp/digest.o \
- crypto/evp/evp_enc.o \
- crypto/evp/evp_key.o \
- crypto/evp/evp_acnf.o \
- crypto/evp/evp_cnf.o \
- crypto/evp/e_des.o \
- crypto/evp/e_bf.o \
- crypto/evp/e_idea.o \
- crypto/evp/e_des3.o \
- crypto/evp/e_camellia.o \
- crypto/evp/e_rc4.o \
- crypto/evp/e_aes.o \
- crypto/evp/names.o \
- crypto/evp/e_seed.o \
- crypto/evp/e_xcbc_d.o \
- crypto/evp/e_rc2.o \
- crypto/evp/e_cast.o \
- crypto/evp/e_rc5.o \
- crypto/evp/m_null.o \
- crypto/evp/m_md2.o \
- crypto/evp/m_md4.o \
- crypto/evp/m_md5.o \
- crypto/evp/m_sha.o \
- crypto/evp/m_sha1.o \
- crypto/evp/m_wp.o \
- crypto/evp/m_dss.o \
- crypto/evp/m_dss1.o \
- crypto/evp/m_mdc2.o \
- crypto/evp/m_ripemd.o \
- crypto/evp/m_ecdsa.o \
- crypto/evp/p_open.o \
- crypto/evp/p_seal.o \
- crypto/evp/p_sign.o \
- crypto/evp/p_verify.o \
- crypto/evp/p_lib.o \
- crypto/evp/p_enc.o \
- crypto/evp/p_dec.o \
- crypto/evp/bio_md.o \
- crypto/evp/bio_b64.o \
- crypto/evp/bio_enc.o \
- crypto/evp/evp_err.o \
- crypto/evp/e_null.o \
- crypto/evp/c_all.o \
- crypto/evp/c_allc.o \
- crypto/evp/c_alld.o \
- crypto/evp/evp_lib.o \
- crypto/evp/bio_ok.o \
- crypto/evp/evp_pkey.o \
- crypto/evp/evp_pbe.o \
- crypto/evp/p5_crpt.o \
- crypto/evp/p5_crpt2.o \
- crypto/evp/e_old.o \
- crypto/evp/pmeth_lib.o \
- crypto/evp/pmeth_fn.o \
- crypto/evp/pmeth_gn.o \
- crypto/evp/m_sigver.o \
- crypto/evp/e_aes_cbc_hmac_sha1.o \
- crypto/evp/e_aes_cbc_hmac_sha256.o \
- crypto/evp/e_rc4_hmac_md5.o \
- crypto/asn1/a_object.o \
- crypto/asn1/a_bitstr.o \
- crypto/asn1/a_utctm.o \
- crypto/asn1/a_gentm.o \
- crypto/asn1/a_time.o \
- crypto/asn1/a_int.o \
- crypto/asn1/a_octet.o \
- crypto/asn1/a_print.o \
- crypto/asn1/a_type.o \
- crypto/asn1/a_set.o \
- crypto/asn1/a_dup.o \
- crypto/asn1/a_d2i_fp.o \
- crypto/asn1/a_i2d_fp.o \
- crypto/asn1/a_enum.o \
- crypto/asn1/a_utf8.o \
- crypto/asn1/a_sign.o \
- crypto/asn1/a_digest.o \
- crypto/asn1/a_verify.o \
- crypto/asn1/a_mbstr.o \
- crypto/asn1/a_strex.o \
- crypto/asn1/x_algor.o \
- crypto/asn1/x_val.o \
- crypto/asn1/x_pubkey.o \
- crypto/asn1/x_sig.o \
- crypto/asn1/x_req.o \
- crypto/asn1/x_attrib.o \
- crypto/asn1/x_bignum.o \
- crypto/asn1/x_long.o \
- crypto/asn1/x_name.o \
- crypto/asn1/x_x509.o \
- crypto/asn1/x_x509a.o \
- crypto/asn1/x_crl.o \
- crypto/asn1/x_info.o \
- crypto/asn1/x_spki.o \
- crypto/asn1/nsseq.o \
- crypto/asn1/x_nx509.o \
- crypto/asn1/d2i_pu.o \
- crypto/asn1/d2i_pr.o \
- crypto/asn1/i2d_pu.o \
- crypto/asn1/i2d_pr.o \
- crypto/asn1/t_req.o \
- crypto/asn1/t_x509.o \
- crypto/asn1/t_x509a.o \
- crypto/asn1/t_crl.o \
- crypto/asn1/t_pkey.o \
- crypto/asn1/t_spki.o \
- crypto/asn1/t_bitst.o \
- crypto/asn1/tasn_new.o \
- crypto/asn1/tasn_fre.o \
- crypto/asn1/tasn_enc.o \
- crypto/asn1/tasn_dec.o \
- crypto/asn1/tasn_utl.o \
- crypto/asn1/tasn_typ.o \
- crypto/asn1/tasn_prn.o \
- crypto/asn1/ameth_lib.o \
- crypto/asn1/f_int.o \
- crypto/asn1/f_string.o \
- crypto/asn1/n_pkey.o \
- crypto/asn1/f_enum.o \
- crypto/asn1/x_pkey.o \
- crypto/asn1/a_bool.o \
- crypto/asn1/x_exten.o \
- crypto/asn1/bio_asn1.o \
- crypto/asn1/bio_ndef.o \
- crypto/asn1/asn_mime.o \
- crypto/asn1/asn1_gen.o \
- crypto/asn1/asn1_par.o \
- crypto/asn1/asn1_lib.o \
- crypto/asn1/asn1_err.o \
- crypto/asn1/a_bytes.o \
- crypto/asn1/a_strnid.o \
- crypto/asn1/evp_asn1.o \
- crypto/asn1/asn_pack.o \
- crypto/asn1/p5_pbe.o \
- crypto/asn1/p5_pbev2.o \
- crypto/asn1/p8_pkey.o \
- crypto/asn1/asn_moid.o \
- crypto/pem/pem_sign.o \
- crypto/pem/pem_seal.o \
- crypto/pem/pem_info.o \
- crypto/pem/pem_lib.o \
- crypto/pem/pem_all.o \
- crypto/pem/pem_err.o \
- crypto/pem/pem_x509.o \
- crypto/pem/pem_xaux.o \
- crypto/pem/pem_oth.o \
- crypto/pem/pem_pk8.o \
- crypto/pem/pem_pkey.o \
- crypto/pem/pvkfmt.o \
- crypto/x509/x509_def.o \
- crypto/x509/x509_d2.o \
- crypto/x509/x509_r2x.o \
- crypto/x509/x509_cmp.o \
- crypto/x509/x509_obj.o \
- crypto/x509/x509_req.o \
- crypto/x509/x509spki.o \
- crypto/x509/x509_vfy.o \
- crypto/x509/x509_set.o \
- crypto/x509/x509cset.o \
- crypto/x509/x509rset.o \
- crypto/x509/x509_err.o \
- crypto/x509/x509name.o \
- crypto/x509/x509_v3.o \
- crypto/x509/x509_ext.o \
- crypto/x509/x509_att.o \
- crypto/x509/x509type.o \
- crypto/x509/x509_lu.o \
- crypto/x509/x_all.o \
- crypto/x509/x509_txt.o \
- crypto/x509/x509_trs.o \
- crypto/x509/x509_vpm.o \
- crypto/x509v3/v3_bcons.o \
- crypto/x509v3/v3_bitst.o \
- crypto/x509v3/v3_conf.o \
- crypto/x509v3/v3_extku.o \
- crypto/x509v3/v3_ia5.o \
- crypto/x509v3/v3_lib.o \
- crypto/x509v3/v3_prn.o \
- crypto/x509v3/v3_utl.o \
- crypto/x509v3/v3err.o \
- crypto/x509v3/v3_genn.o \
- crypto/x509v3/v3_alt.o \
- crypto/x509v3/v3_skey.o \
- crypto/x509v3/v3_akey.o \
- crypto/x509v3/v3_pku.o \
- crypto/x509v3/v3_int.o \
- crypto/x509v3/v3_enum.o \
- crypto/x509v3/v3_sxnet.o \
- crypto/x509v3/v3_cpols.o \
- crypto/x509v3/v3_crld.o \
- crypto/x509v3/v3_purp.o \
- crypto/x509v3/v3_info.o \
- crypto/x509v3/v3_ocsp.o \
- crypto/x509v3/v3_akeya.o \
- crypto/x509v3/v3_pmaps.o \
- crypto/x509v3/v3_pcons.o \
- crypto/x509v3/v3_ncons.o \
- crypto/x509v3/v3_pcia.o \
- crypto/x509v3/v3_pci.o \
- crypto/x509v3/pcy_cache.o \
- crypto/x509v3/pcy_node.o \
- crypto/x509v3/pcy_data.o \
- crypto/x509v3/pcy_map.o \
- crypto/x509v3/pcy_tree.o \
- crypto/x509v3/pcy_lib.o \
- crypto/x509v3/v3_asid.o \
- crypto/x509v3/v3_addr.o \
- crypto/conf/conf_err.o \
- crypto/conf/conf_lib.o \
- crypto/conf/conf_api.o \
- crypto/conf/conf_def.o \
- crypto/conf/conf_mod.o \
- crypto/conf/conf_mall.o \
- crypto/conf/conf_sap.o \
- crypto/txt_db/txt_db.o \
- crypto/pkcs7/pk7_asn1.o \
- crypto/pkcs7/pk7_lib.o \
- crypto/pkcs7/pkcs7err.o \
- crypto/pkcs7/pk7_doit.o \
- crypto/pkcs7/pk7_smime.o \
- crypto/pkcs7/pk7_attr.o \
- crypto/pkcs7/pk7_mime.o \
- crypto/pkcs7/bio_pk7.o \
- crypto/pkcs12/p12_add.o \
- crypto/pkcs12/p12_asn.o \
- crypto/pkcs12/p12_attr.o \
- crypto/pkcs12/p12_crpt.o \
- crypto/pkcs12/p12_crt.o \
- crypto/pkcs12/p12_decr.o \
- crypto/pkcs12/p12_init.o \
- crypto/pkcs12/p12_key.o \
- crypto/pkcs12/p12_kiss.o \
- crypto/pkcs12/p12_mutl.o \
- crypto/pkcs12/p12_utl.o \
- crypto/pkcs12/p12_npas.o \
- crypto/pkcs12/pk12err.o \
- crypto/pkcs12/p12_p8d.o \
- crypto/pkcs12/p12_p8e.o \
- crypto/comp/comp_lib.o \
- crypto/comp/comp_err.o \
- crypto/comp/c_rle.o \
- crypto/comp/c_zlib.o \
- crypto/ocsp/ocsp_asn.o \
- crypto/ocsp/ocsp_ext.o \
- crypto/ocsp/ocsp_ht.o \
- crypto/ocsp/ocsp_lib.o \
- crypto/ocsp/ocsp_cl.o \
- crypto/ocsp/ocsp_srv.o \
- crypto/ocsp/ocsp_prn.o \
- crypto/ocsp/ocsp_vfy.o \
- crypto/ocsp/ocsp_err.o \
- crypto/cmac/cmac.o \
- crypto/cmac/cm_ameth.o \
- crypto/cmac/cm_pmeth.o \
+OBJS = crypto/cryptlib.o \
+ crypto/mem.o \
+ crypto/mem_clr.o \
+ crypto/mem_dbg.o \
+ crypto/cversion.o \
+ crypto/ex_data.o \
+ crypto/cpt_err.o \
+ crypto/ebcdic.o \
+ crypto/uid.o \
+ crypto/o_time.o \
+ crypto/o_str.o \
+ crypto/o_dir.o \
+ crypto/o_fips.o \
+ crypto/o_init.o \
+ crypto/fips_ers.o \
+ crypto/md5/md5_dgst.o \
+ crypto/md5/md5_one.o \
+ crypto/sha/sha_dgst.o \
+ crypto/sha/sha1dgst.o \
+ crypto/sha/sha_one.o \
+ crypto/sha/sha1_one.o \
+ crypto/sha/sha256.o \
+ crypto/sha/sha512.o \
+ crypto/hmac/hmac.o \
+ crypto/hmac/hm_ameth.o \
+ crypto/hmac/hm_pmeth.o \
+ crypto/rc4/rc4_enc.o \
+ crypto/rc4/rc4_skey.o \
+ crypto/rc4/rc4_utl.o \
+ crypto/aes/aes_misc.o \
+ crypto/aes/aes_ecb.o \
+ crypto/aes/aes_cfb.o \
+ crypto/aes/aes_ofb.o \
+ crypto/aes/aes_ctr.o \
+ crypto/aes/aes_ige.o \
+ crypto/aes/aes_wrap.o \
+ crypto/aes/aes_core.o \
+ crypto/aes/aes_cbc.o \
+ crypto/modes/cbc128.o \
+ crypto/modes/ctr128.o \
+ crypto/modes/cts128.o \
+ crypto/modes/cfb128.o \
+ crypto/modes/ofb128.o \
+ crypto/modes/gcm128.o \
+ crypto/modes/ccm128.o \
+ crypto/modes/xts128.o \
+ crypto/modes/wrap128.o \
+ crypto/bn/bn_add.o \
+ crypto/bn/bn_div.o \
+ crypto/bn/bn_exp.o \
+ crypto/bn/bn_lib.o \
+ crypto/bn/bn_ctx.o \
+ crypto/bn/bn_mul.o \
+ crypto/bn/bn_mod.o \
+ crypto/bn/bn_print.o \
+ crypto/bn/bn_rand.o \
+ crypto/bn/bn_shift.o \
+ crypto/bn/bn_word.o \
+ crypto/bn/bn_blind.o \
+ crypto/bn/bn_kron.o \
+ crypto/bn/bn_sqrt.o \
+ crypto/bn/bn_gcd.o \
+ crypto/bn/bn_prime.o \
+ crypto/bn/bn_err.o \
+ crypto/bn/bn_sqr.o \
+ crypto/bn/bn_asm.o \
+ crypto/bn/bn_recp.o \
+ crypto/bn/bn_mont.o \
+ crypto/bn/bn_mpi.o \
+ crypto/bn/bn_exp2.o \
+ crypto/bn/bn_gf2m.o \
+ crypto/bn/bn_nist.o \
+ crypto/bn/bn_depr.o \
+ crypto/bn/bn_x931p.o \
+ crypto/bn/bn_const.o \
+ crypto/rsa/rsa_eay.o \
+ crypto/rsa/rsa_gen.o \
+ crypto/rsa/rsa_lib.o \
+ crypto/rsa/rsa_sign.o \
+ crypto/rsa/rsa_saos.o \
+ crypto/rsa/rsa_err.o \
+ crypto/rsa/rsa_pk1.o \
+ crypto/rsa/rsa_ssl.o \
+ crypto/rsa/rsa_none.o \
+ crypto/rsa/rsa_oaep.o \
+ crypto/rsa/rsa_chk.o \
+ crypto/rsa/rsa_null.o \
+ crypto/rsa/rsa_pss.o \
+ crypto/rsa/rsa_x931.o \
+ crypto/rsa/rsa_asn1.o \
+ crypto/rsa/rsa_depr.o \
+ crypto/rsa/rsa_ameth.o \
+ crypto/rsa/rsa_prn.o \
+ crypto/rsa/rsa_pmeth.o \
+ crypto/rsa/rsa_crpt.o \
+ crypto/dso/dso_dl.o \
+ crypto/dso/dso_dlfcn.o \
+ crypto/dso/dso_err.o \
+ crypto/dso/dso_lib.o \
+ crypto/dso/dso_null.o \
+ crypto/dso/dso_openssl.o \
+ crypto/dso/dso_win32.o \
+ crypto/dso/dso_vms.o \
+ crypto/dso/dso_beos.o \
+ crypto/dh/dh_asn1.o \
+ crypto/dh/dh_gen.o \
+ crypto/dh/dh_key.o \
+ crypto/dh/dh_lib.o \
+ crypto/dh/dh_check.o \
+ crypto/dh/dh_err.o \
+ crypto/dh/dh_depr.o \
+ crypto/dh/dh_ameth.o \
+ crypto/dh/dh_pmeth.o \
+ crypto/dh/dh_prn.o \
+ crypto/dh/dh_rfc5114.o \
+ crypto/buffer/buffer.o \
+ crypto/buffer/buf_str.o \
+ crypto/buffer/buf_err.o \
+ crypto/bio/bio_lib.o \
+ crypto/bio/bio_cb.o \
+ crypto/bio/bio_err.o \
+ crypto/bio/bss_mem.o \
+ crypto/bio/bss_null.o \
+ crypto/bio/bss_fd.o \
+ crypto/bio/bss_file.o \
+ crypto/bio/bss_sock.o \
+ crypto/bio/bss_conn.o \
+ crypto/bio/bf_null.o \
+ crypto/bio/bf_buff.o \
+ crypto/bio/b_dump.o \
+ crypto/bio/b_print.o \
+ crypto/bio/b_sock.o \
+ crypto/bio/bss_acpt.o \
+ crypto/bio/bf_nbio.o \
+ crypto/bio/bss_log.o \
+ crypto/bio/bss_bio.o \
+ crypto/bio/bss_dgram.o \
+ crypto/stack/stack.o \
+ crypto/lhash/lhash.o \
+ crypto/lhash/lh_stats.o \
+ crypto/rand/md_rand.o \
+ crypto/rand/randfile.o \
+ crypto/rand/rand_lib.o \
+ crypto/rand/rand_err.o \
+ crypto/rand/rand_unix.o \
+ crypto/err/err.o \
+ crypto/err/err_all.o \
+ crypto/err/err_prn.o \
+ crypto/objects/o_names.o \
+ crypto/objects/obj_dat.o \
+ crypto/objects/obj_lib.o \
+ crypto/objects/obj_err.o \
+ crypto/objects/obj_xref.o \
+ crypto/evp/encode.o \
+ crypto/evp/digest.o \
+ crypto/evp/evp_enc.o \
+ crypto/evp/evp_key.o \
+ crypto/evp/evp_acnf.o \
+ crypto/evp/evp_cnf.o \
+ crypto/evp/e_des.o \
+ crypto/evp/e_bf.o \
+ crypto/evp/e_idea.o \
+ crypto/evp/e_des3.o \
+ crypto/evp/e_camellia.o \
+ crypto/evp/e_rc4.o \
+ crypto/evp/e_aes.o \
+ crypto/evp/names.o \
+ crypto/evp/e_seed.o \
+ crypto/evp/e_xcbc_d.o \
+ crypto/evp/e_rc2.o \
+ crypto/evp/e_cast.o \
+ crypto/evp/e_rc5.o \
+ crypto/evp/m_null.o \
+ crypto/evp/m_md2.o \
+ crypto/evp/m_md4.o \
+ crypto/evp/m_md5.o \
+ crypto/evp/m_sha.o \
+ crypto/evp/m_sha1.o \
+ crypto/evp/m_wp.o \
+ crypto/evp/m_dss.o \
+ crypto/evp/m_dss1.o \
+ crypto/evp/m_mdc2.o \
+ crypto/evp/m_ripemd.o \
+ crypto/evp/m_ecdsa.o \
+ crypto/evp/p_open.o \
+ crypto/evp/p_seal.o \
+ crypto/evp/p_sign.o \
+ crypto/evp/p_verify.o \
+ crypto/evp/p_lib.o \
+ crypto/evp/p_enc.o \
+ crypto/evp/p_dec.o \
+ crypto/evp/bio_md.o \
+ crypto/evp/bio_b64.o \
+ crypto/evp/bio_enc.o \
+ crypto/evp/evp_err.o \
+ crypto/evp/e_null.o \
+ crypto/evp/c_all.o \
+ crypto/evp/c_allc.o \
+ crypto/evp/c_alld.o \
+ crypto/evp/evp_lib.o \
+ crypto/evp/bio_ok.o \
+ crypto/evp/evp_pkey.o \
+ crypto/evp/evp_pbe.o \
+ crypto/evp/p5_crpt.o \
+ crypto/evp/p5_crpt2.o \
+ crypto/evp/e_old.o \
+ crypto/evp/pmeth_lib.o \
+ crypto/evp/pmeth_fn.o \
+ crypto/evp/pmeth_gn.o \
+ crypto/evp/m_sigver.o \
+ crypto/evp/e_aes_cbc_hmac_sha1.o \
+ crypto/evp/e_aes_cbc_hmac_sha256.o \
+ crypto/evp/e_rc4_hmac_md5.o \
+ crypto/asn1/a_object.o \
+ crypto/asn1/a_bitstr.o \
+ crypto/asn1/a_utctm.o \
+ crypto/asn1/a_gentm.o \
+ crypto/asn1/a_time.o \
+ crypto/asn1/a_int.o \
+ crypto/asn1/a_octet.o \
+ crypto/asn1/a_print.o \
+ crypto/asn1/a_type.o \
+ crypto/asn1/a_set.o \
+ crypto/asn1/a_dup.o \
+ crypto/asn1/a_d2i_fp.o \
+ crypto/asn1/a_i2d_fp.o \
+ crypto/asn1/a_enum.o \
+ crypto/asn1/a_utf8.o \
+ crypto/asn1/a_sign.o \
+ crypto/asn1/a_digest.o \
+ crypto/asn1/a_verify.o \
+ crypto/asn1/a_mbstr.o \
+ crypto/asn1/a_strex.o \
+ crypto/asn1/x_algor.o \
+ crypto/asn1/x_val.o \
+ crypto/asn1/x_pubkey.o \
+ crypto/asn1/x_sig.o \
+ crypto/asn1/x_req.o \
+ crypto/asn1/x_attrib.o \
+ crypto/asn1/x_bignum.o \
+ crypto/asn1/x_long.o \
+ crypto/asn1/x_name.o \
+ crypto/asn1/x_x509.o \
+ crypto/asn1/x_x509a.o \
+ crypto/asn1/x_crl.o \
+ crypto/asn1/x_info.o \
+ crypto/asn1/x_spki.o \
+ crypto/asn1/nsseq.o \
+ crypto/asn1/x_nx509.o \
+ crypto/asn1/d2i_pu.o \
+ crypto/asn1/d2i_pr.o \
+ crypto/asn1/i2d_pu.o \
+ crypto/asn1/i2d_pr.o \
+ crypto/asn1/t_req.o \
+ crypto/asn1/t_x509.o \
+ crypto/asn1/t_x509a.o \
+ crypto/asn1/t_crl.o \
+ crypto/asn1/t_pkey.o \
+ crypto/asn1/t_spki.o \
+ crypto/asn1/t_bitst.o \
+ crypto/asn1/tasn_new.o \
+ crypto/asn1/tasn_fre.o \
+ crypto/asn1/tasn_enc.o \
+ crypto/asn1/tasn_dec.o \
+ crypto/asn1/tasn_utl.o \
+ crypto/asn1/tasn_typ.o \
+ crypto/asn1/tasn_prn.o \
+ crypto/asn1/ameth_lib.o \
+ crypto/asn1/f_int.o \
+ crypto/asn1/f_string.o \
+ crypto/asn1/n_pkey.o \
+ crypto/asn1/f_enum.o \
+ crypto/asn1/x_pkey.o \
+ crypto/asn1/a_bool.o \
+ crypto/asn1/x_exten.o \
+ crypto/asn1/bio_asn1.o \
+ crypto/asn1/bio_ndef.o \
+ crypto/asn1/asn_mime.o \
+ crypto/asn1/asn1_gen.o \
+ crypto/asn1/asn1_par.o \
+ crypto/asn1/asn1_lib.o \
+ crypto/asn1/asn1_err.o \
+ crypto/asn1/a_bytes.o \
+ crypto/asn1/a_strnid.o \
+ crypto/asn1/evp_asn1.o \
+ crypto/asn1/asn_pack.o \
+ crypto/asn1/p5_pbe.o \
+ crypto/asn1/p5_pbev2.o \
+ crypto/asn1/p8_pkey.o \
+ crypto/asn1/asn_moid.o \
+ crypto/pem/pem_sign.o \
+ crypto/pem/pem_seal.o \
+ crypto/pem/pem_info.o \
+ crypto/pem/pem_lib.o \
+ crypto/pem/pem_all.o \
+ crypto/pem/pem_err.o \
+ crypto/pem/pem_x509.o \
+ crypto/pem/pem_xaux.o \
+ crypto/pem/pem_oth.o \
+ crypto/pem/pem_pk8.o \
+ crypto/pem/pem_pkey.o \
+ crypto/pem/pvkfmt.o \
+ crypto/x509/x509_def.o \
+ crypto/x509/x509_d2.o \
+ crypto/x509/x509_r2x.o \
+ crypto/x509/x509_cmp.o \
+ crypto/x509/x509_obj.o \
+ crypto/x509/x509_req.o \
+ crypto/x509/x509spki.o \
+ crypto/x509/x509_vfy.o \
+ crypto/x509/x509_set.o \
+ crypto/x509/x509cset.o \
+ crypto/x509/x509rset.o \
+ crypto/x509/x509_err.o \
+ crypto/x509/x509name.o \
+ crypto/x509/x509_v3.o \
+ crypto/x509/x509_ext.o \
+ crypto/x509/x509_att.o \
+ crypto/x509/x509type.o \
+ crypto/x509/x509_lu.o \
+ crypto/x509/x_all.o \
+ crypto/x509/x509_txt.o \
+ crypto/x509/x509_trs.o \
+ crypto/x509/x509_vpm.o \
+ crypto/x509v3/v3_bcons.o \
+ crypto/x509v3/v3_bitst.o \
+ crypto/x509v3/v3_conf.o \
+ crypto/x509v3/v3_extku.o \
+ crypto/x509v3/v3_ia5.o \
+ crypto/x509v3/v3_lib.o \
+ crypto/x509v3/v3_prn.o \
+ crypto/x509v3/v3_utl.o \
+ crypto/x509v3/v3err.o \
+ crypto/x509v3/v3_genn.o \
+ crypto/x509v3/v3_alt.o \
+ crypto/x509v3/v3_skey.o \
+ crypto/x509v3/v3_akey.o \
+ crypto/x509v3/v3_pku.o \
+ crypto/x509v3/v3_int.o \
+ crypto/x509v3/v3_enum.o \
+ crypto/x509v3/v3_sxnet.o \
+ crypto/x509v3/v3_cpols.o \
+ crypto/x509v3/v3_crld.o \
+ crypto/x509v3/v3_purp.o \
+ crypto/x509v3/v3_info.o \
+ crypto/x509v3/v3_ocsp.o \
+ crypto/x509v3/v3_akeya.o \
+ crypto/x509v3/v3_pmaps.o \
+ crypto/x509v3/v3_pcons.o \
+ crypto/x509v3/v3_ncons.o \
+ crypto/x509v3/v3_pcia.o \
+ crypto/x509v3/v3_pci.o \
+ crypto/x509v3/pcy_cache.o \
+ crypto/x509v3/pcy_node.o \
+ crypto/x509v3/pcy_data.o \
+ crypto/x509v3/pcy_map.o \
+ crypto/x509v3/pcy_tree.o \
+ crypto/x509v3/pcy_lib.o \
+ crypto/x509v3/v3_asid.o \
+ crypto/x509v3/v3_addr.o \
+ crypto/conf/conf_err.o \
+ crypto/conf/conf_lib.o \
+ crypto/conf/conf_api.o \
+ crypto/conf/conf_def.o \
+ crypto/conf/conf_mod.o \
+ crypto/conf/conf_mall.o \
+ crypto/conf/conf_sap.o \
+ crypto/txt_db/txt_db.o \
+ crypto/pkcs7/pk7_asn1.o \
+ crypto/pkcs7/pk7_lib.o \
+ crypto/pkcs7/pkcs7err.o \
+ crypto/pkcs7/pk7_doit.o \
+ crypto/pkcs7/pk7_smime.o \
+ crypto/pkcs7/pk7_attr.o \
+ crypto/pkcs7/pk7_mime.o \
+ crypto/pkcs7/bio_pk7.o \
+ crypto/pkcs12/p12_add.o \
+ crypto/pkcs12/p12_asn.o \
+ crypto/pkcs12/p12_attr.o \
+ crypto/pkcs12/p12_crpt.o \
+ crypto/pkcs12/p12_crt.o \
+ crypto/pkcs12/p12_decr.o \
+ crypto/pkcs12/p12_init.o \
+ crypto/pkcs12/p12_key.o \
+ crypto/pkcs12/p12_kiss.o \
+ crypto/pkcs12/p12_mutl.o \
+ crypto/pkcs12/p12_utl.o \
+ crypto/pkcs12/p12_npas.o \
+ crypto/pkcs12/pk12err.o \
+ crypto/pkcs12/p12_p8d.o \
+ crypto/pkcs12/p12_p8e.o \
+ crypto/comp/comp_lib.o \
+ crypto/comp/comp_err.o \
+ crypto/comp/c_rle.o \
+ crypto/comp/c_zlib.o \
+ crypto/ocsp/ocsp_asn.o \
+ crypto/ocsp/ocsp_ext.o \
+ crypto/ocsp/ocsp_ht.o \
+ crypto/ocsp/ocsp_lib.o \
+ crypto/ocsp/ocsp_cl.o \
+ crypto/ocsp/ocsp_srv.o \
+ crypto/ocsp/ocsp_prn.o \
+ crypto/ocsp/ocsp_vfy.o \
+ crypto/ocsp/ocsp_err.o \
+ crypto/cmac/cmac.o \
+ crypto/cmac/cm_ameth.o \
+ crypto/cmac/cm_pmeth.o \
all: $(TARGET)
diff --git a/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c b/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c
index 5170906c..017be9d9 100644
--- a/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/asn_mime.c
@@ -843,6 +843,10 @@ static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value)
char *tmpname, *tmpval, *p;
int c;
MIME_PARAM *mparam;
+
+ if (!mhdr)
+ return 0;
+
if (name) {
tmpname = BUF_strdup(name);
if (!tmpname)
diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_req.c b/Cryptlib/OpenSSL/crypto/asn1/t_req.c
index 70aba4cc..c32241c2 100644
--- a/Cryptlib/OpenSSL/crypto/asn1/t_req.c
+++ b/Cryptlib/OpenSSL/crypto/asn1/t_req.c
@@ -195,10 +195,11 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags,
goto err;
if (BIO_puts(bp, ":") <= 0)
goto err;
- if ((type == V_ASN1_PRINTABLESTRING) ||
+ if (bs != NULL && (
+ (type == V_ASN1_PRINTABLESTRING) ||
(type == V_ASN1_UTF8STRING) ||
(type == V_ASN1_T61STRING) ||
- (type == V_ASN1_IA5STRING)) {
+ (type == V_ASN1_IA5STRING))) {
if (BIO_write(bp, (char *)bs->data, bs->length)
!= bs->length)
goto err;
diff --git a/Cryptlib/OpenSSL/crypto/bio/b_print.c b/Cryptlib/OpenSSL/crypto/bio/b_print.c
index fea73864..29da9036 100644
--- a/Cryptlib/OpenSSL/crypto/bio/b_print.c
+++ b/Cryptlib/OpenSSL/crypto/bio/b_print.c
@@ -134,9 +134,9 @@ static int fmtfp(char **, char **, size_t *, size_t *,
LDOUBLE, int, int, int);
#endif
static int doapr_outch(char **, char **, size_t *, size_t *, int);
-static int _dopr(char **sbuffer, char **buffer,
- size_t *maxlen, size_t *retlen, int *truncated,
- const char *format, va_list args);
+static int EFIAPI _dopr(char **sbuffer, char **buffer,
+ size_t *maxlen, size_t *retlen, int *truncated,
+ const char *format, ms_va_list args);
/* format read states */
#define DP_S_DEFAULT 0
@@ -167,11 +167,11 @@ static int _dopr(char **sbuffer, char **buffer,
#define char_to_int(p) (p - '0')
#define OSSL_MAX(p,q) ((p >= q) ? p : q)
-static int
+static int EFIAPI
_dopr(char **sbuffer,
char **buffer,
size_t *maxlen,
- size_t *retlen, int *truncated, const char *format, va_list args)
+ size_t *retlen, int *truncated, const char *format, ms_va_list args)
{
char ch;
LLONG value;
@@ -236,7 +236,7 @@ _dopr(char **sbuffer,
min = 10 * min + char_to_int(ch);
ch = *format++;
} else if (ch == '*') {
- min = va_arg(args, int);
+ min = ms_va_arg(args, int);
ch = *format++;
state = DP_S_DOT;
} else
@@ -256,7 +256,7 @@ _dopr(char **sbuffer,
max = 10 * max + char_to_int(ch);
ch = *format++;
} else if (ch == '*') {
- max = va_arg(args, int);
+ max = ms_va_arg(args, int);
ch = *format++;
state = DP_S_MOD;
} else
@@ -297,16 +297,16 @@ _dopr(char **sbuffer,
case 'i':
switch (cflags) {
case DP_C_SHORT:
- value = (short int)va_arg(args, int);
+ value = (short int)ms_va_arg(args, int);
break;
case DP_C_LONG:
- value = va_arg(args, long int);
+ value = ms_va_arg(args, long int);
break;
case DP_C_LLONG:
- value = va_arg(args, LLONG);
+ value = ms_va_arg(args, LLONG);
break;
default:
- value = va_arg(args, int);
+ value = ms_va_arg(args, int);
break;
}
if (!fmtint(sbuffer, buffer, &currlen, maxlen, value, 10, min,
@@ -322,16 +322,16 @@ _dopr(char **sbuffer,
flags |= DP_F_UNSIGNED;
switch (cflags) {
case DP_C_SHORT:
- value = (unsigned short int)va_arg(args, unsigned int);
+ value = (unsigned short int)ms_va_arg(args, unsigned int);
break;
case DP_C_LONG:
- value = (LLONG) va_arg(args, unsigned long int);
+ value = (LLONG) ms_va_arg(args, unsigned long int);
break;
case DP_C_LLONG:
- value = va_arg(args, unsigned LLONG);
+ value = ms_va_arg(args, unsigned LLONG);
break;
default:
- value = (LLONG) va_arg(args, unsigned int);
+ value = (LLONG) ms_va_arg(args, unsigned int);
break;
}
if (!fmtint(sbuffer, buffer, &currlen, maxlen, value,
@@ -342,9 +342,9 @@ _dopr(char **sbuffer,
#ifndef OPENSSL_SYS_UEFI
case 'f':
if (cflags == DP_C_LDOUBLE)
- fvalue = va_arg(args, LDOUBLE);
+ fvalue = ms_va_arg(args, LDOUBLE);
else
- fvalue = va_arg(args, double);
+ fvalue = ms_va_arg(args, double);
if (!fmtfp(sbuffer, buffer, &currlen, maxlen, fvalue, min, max,
flags))
return 0;
@@ -353,26 +353,26 @@ _dopr(char **sbuffer,
flags |= DP_F_UP;
case 'e':
if (cflags == DP_C_LDOUBLE)
- fvalue = va_arg(args, LDOUBLE);
+ fvalue = ms_va_arg(args, LDOUBLE);
else
- fvalue = va_arg(args, double);
+ fvalue = ms_va_arg(args, double);
break;
case 'G':
flags |= DP_F_UP;
case 'g':
if (cflags == DP_C_LDOUBLE)
- fvalue = va_arg(args, LDOUBLE);
+ fvalue = ms_va_arg(args, LDOUBLE);
else
- fvalue = va_arg(args, double);
+ fvalue = ms_va_arg(args, double);
break;
#endif
case 'c':
if(!doapr_outch(sbuffer, buffer, &currlen, maxlen,
- va_arg(args, int)))
+ ms_va_arg(args, int)))
return 0;
break;
case 's':
- strvalue = va_arg(args, char *);
+ strvalue = ms_va_arg(args, char *);
if (max < 0) {
if (buffer)
max = INT_MAX;
@@ -384,7 +384,7 @@ _dopr(char **sbuffer,
return 0;
break;
case 'p':
- value = (long)va_arg(args, void *);
+ value = (long)ms_va_arg(args, void *);
if (!fmtint(sbuffer, buffer, &currlen, maxlen,
value, 16, min, max, flags | DP_F_NUM))
return 0;
@@ -392,19 +392,19 @@ _dopr(char **sbuffer,
case 'n': /* XXX */
if (cflags == DP_C_SHORT) {
short int *num;
- num = va_arg(args, short int *);
+ num = ms_va_arg(args, short int *);
*num = currlen;
} else if (cflags == DP_C_LONG) { /* XXX */
long int *num;
- num = va_arg(args, long int *);
+ num = ms_va_arg(args, long int *);
*num = (long int)currlen;
} else if (cflags == DP_C_LLONG) { /* XXX */
LLONG *num;
- num = va_arg(args, LLONG *);
+ num = ms_va_arg(args, LLONG *);
*num = (LLONG) currlen;
} else {
int *num;
- num = va_arg(args, int *);
+ num = ms_va_arg(args, int *);
*num = currlen;
}
break;
@@ -797,20 +797,20 @@ doapr_outch(char **sbuffer,
/***************************************************************************/
-int BIO_printf(BIO *bio, const char *format, ...)
+int EFIAPI BIO_printf(BIO *bio, const char *format, ...)
{
- va_list args;
+ ms_va_list args;
int ret;
- va_start(args, format);
+ ms_va_start(args, format);
ret = BIO_vprintf(bio, format, args);
- va_end(args);
+ ms_va_end(args);
return (ret);
}
-int BIO_vprintf(BIO *bio, const char *format, va_list args)
+int EFIAPI BIO_vprintf(BIO *bio, const char *format, ms_va_list args)
{
int ret;
size_t retlen;
@@ -845,20 +845,20 @@ int BIO_vprintf(BIO *bio, const char *format, va_list args)
* closely related to BIO_printf, and we need *some* name prefix ... (XXX the
* function should be renamed, but to what?)
*/
-int BIO_snprintf(char *buf, size_t n, const char *format, ...)
+int EFIAPI BIO_snprintf(char *buf, size_t n, const char *format, ...)
{
- va_list args;
+ ms_va_list args;
int ret;
- va_start(args, format);
+ ms_va_start(args, format);
ret = BIO_vsnprintf(buf, n, format, args);
- va_end(args);
+ ms_va_end(args);
return (ret);
}
-int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
+int EFIAPI BIO_vsnprintf(char *buf, size_t n, const char *format, ms_va_list args)
{
size_t retlen;
int truncated;
diff --git a/Cryptlib/OpenSSL/crypto/bn/bn_lib.c b/Cryptlib/OpenSSL/crypto/bn/bn_lib.c
index 10b78f51..2671f35c 100644
--- a/Cryptlib/OpenSSL/crypto/bn/bn_lib.c
+++ b/Cryptlib/OpenSSL/crypto/bn/bn_lib.c
@@ -496,6 +496,9 @@ BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
if (bn_wexpand(a, b->top) == NULL)
return (NULL);
+ if (!a || !b || !a->d || !b->d)
+ return (NULL);
+
#if 1
A = a->d;
B = b->d;
diff --git a/Cryptlib/OpenSSL/crypto/conf/conf_lib.c b/Cryptlib/OpenSSL/crypto/conf/conf_lib.c
index 952b5452..b3b29adb 100644
--- a/Cryptlib/OpenSSL/crypto/conf/conf_lib.c
+++ b/Cryptlib/OpenSSL/crypto/conf/conf_lib.c
@@ -340,6 +340,9 @@ int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
return 0;
}
+ if (conf == NULL)
+ return 0;
+
str = NCONF_get_string(conf, group, name);
if (str == NULL)
diff --git a/Cryptlib/OpenSSL/crypto/cryptlib.c b/Cryptlib/OpenSSL/crypto/cryptlib.c
index da4b34dc..23f58fa9 100644
--- a/Cryptlib/OpenSSL/crypto/cryptlib.c
+++ b/Cryptlib/OpenSSL/crypto/cryptlib.c
@@ -866,7 +866,7 @@ int OPENSSL_isservice(void)
}
# endif
-void OPENSSL_showfatal(const char *fmta, ...)
+void EFIAPI OPENSSL_showfatal(const char *fmta, ...)
{
va_list ap;
TCHAR buf[256];
@@ -979,7 +979,7 @@ void OPENSSL_showfatal(const char *fmta, ...)
MessageBox(NULL, buf, _T("OpenSSL: FATAL"), MB_OK | MB_ICONERROR);
}
#else
-void OPENSSL_showfatal(const char *fmta, ...)
+void EFIAPI OPENSSL_showfatal(const char *fmta, ...)
{
#ifndef OPENSSL_NO_STDIO
va_list ap;
diff --git a/Cryptlib/OpenSSL/crypto/cryptlib.h b/Cryptlib/OpenSSL/crypto/cryptlib.h
index 3e3ea5e3..2bce19ff 100644
--- a/Cryptlib/OpenSSL/crypto/cryptlib.h
+++ b/Cryptlib/OpenSSL/crypto/cryptlib.h
@@ -100,7 +100,7 @@ extern "C" {
void OPENSSL_cpuid_setup(void);
extern unsigned int OPENSSL_ia32cap_P[];
-void OPENSSL_showfatal(const char *fmta, ...);
+void EFIAPI OPENSSL_showfatal(const char *fmta, ...);
#ifndef OPENSSL_NO_STDIO
void *OPENSSL_stderr(void);
#endif
diff --git a/Cryptlib/OpenSSL/crypto/err/err.c b/Cryptlib/OpenSSL/crypto/err/err.c
index 52dc9a5d..e2251454 100644
--- a/Cryptlib/OpenSSL/crypto/err/err.c
+++ b/Cryptlib/OpenSSL/crypto/err/err.c
@@ -1075,15 +1075,15 @@ void ERR_set_error_data(char *data, int flags)
es->err_data_flags[i] = flags;
}
-void ERR_add_error_data(int num, ...)
+void EFIAPI ERR_add_error_data(int num, ...)
{
- va_list args;
- va_start(args, num);
+ ms_va_list args;
+ ms_va_start(args, num);
ERR_add_error_vdata(num, args);
- va_end(args);
+ ms_va_end(args);
}
-void ERR_add_error_vdata(int num, va_list args)
+void EFIAPI ERR_add_error_vdata(int num, ms_va_list args)
{
int i, n, s;
char *str, *p, *a;
@@ -1096,7 +1096,7 @@ void ERR_add_error_vdata(int num, va_list args)
n = 0;
for (i = 0; i < num; i++) {
- a = va_arg(args, char *);
+ a = ms_va_arg(args, char *);
/* ignore NULLs, thanks to Bob Beck <beck@obtuse.com> */
if (a != NULL) {
n += strlen(a);
diff --git a/Cryptlib/OpenSSL/crypto/mem_dbg.c b/Cryptlib/OpenSSL/crypto/mem_dbg.c
index 8525ded7..c98c1b88 100644
--- a/Cryptlib/OpenSSL/crypto/mem_dbg.c
+++ b/Cryptlib/OpenSSL/crypto/mem_dbg.c
@@ -640,8 +640,13 @@ static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l)
if (m->addr == (char *)l->bio)
return;
+ if (!bufp)
+ return;
+
if (options & V_CRYPTO_MDEBUG_TIME) {
lcl = localtime(&m->time);
+ if (!lcl)
+ return;
BIO_snprintf(bufp, BUF_REMAIN, "[%02d:%02d:%02d] ",
lcl->tm_hour, lcl->tm_min, lcl->tm_sec);
diff --git a/Cryptlib/OpenSSL/crypto/pkcs7/pk7_doit.c b/Cryptlib/OpenSSL/crypto/pkcs7/pk7_doit.c
index 6cf8253b..e6a44f40 100644
--- a/Cryptlib/OpenSSL/crypto/pkcs7/pk7_doit.c
+++ b/Cryptlib/OpenSSL/crypto/pkcs7/pk7_doit.c
@@ -654,7 +654,7 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
if (data_body->length > 0)
BIO_write(bio, (char *)data_body->data, data_body->length);
# else
- if (data_body->length > 0)
+ if (data_body != NULL && data_body->length > 0)
bio = BIO_new_mem_buf(data_body->data, data_body->length);
else {
bio = BIO_new(BIO_s_mem());
diff --git a/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c b/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c
index 1269a146..b27b0f68 100644
--- a/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c
+++ b/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c
@@ -530,7 +530,8 @@ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags)
{
BIO *tmpmem;
- int ret, i;
+ int ret = 0; /* current openssl sets 'ret' to zero here */
+ int i;
char *buf = NULL;
if (!p7) {
diff --git a/Cryptlib/OpenSSL/crypto/rsa/rsa_ameth.c b/Cryptlib/OpenSSL/crypto/rsa/rsa_ameth.c
index 951e1d5c..ddead3d7 100644
--- a/Cryptlib/OpenSSL/crypto/rsa/rsa_ameth.c
+++ b/Cryptlib/OpenSSL/crypto/rsa/rsa_ameth.c
@@ -768,6 +768,7 @@ static int rsa_item_sign(EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn,
return 2;
}
+#ifndef OPENSSL_NO_CMS
static RSA_OAEP_PARAMS *rsa_oaep_decode(const X509_ALGOR *alg,
X509_ALGOR **pmaskHash)
{
@@ -791,7 +792,6 @@ static RSA_OAEP_PARAMS *rsa_oaep_decode(const X509_ALGOR *alg,
return pss;
}
-#ifndef OPENSSL_NO_CMS
static int rsa_cms_decrypt(CMS_RecipientInfo *ri)
{
EVP_PKEY_CTX *pkctx;
diff --git a/Cryptlib/OpenSSL/crypto/x509/x509_trs.c b/Cryptlib/OpenSSL/crypto/x509/x509_trs.c
index 11e07634..2fa33823 100644
--- a/Cryptlib/OpenSSL/crypto/x509/x509_trs.c
+++ b/Cryptlib/OpenSSL/crypto/x509/x509_trs.c
@@ -131,6 +131,8 @@ int X509_check_trust(X509 *x, int id, int flags)
if (idx == -1)
return default_trust(id, x, flags);
pt = X509_TRUST_get0(idx);
+ if (!pt)
+ return default_trust(id, x, flags);
return pt->check_trust(pt, x, flags);
}
@@ -195,8 +197,10 @@ int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int),
return 0;
}
trtmp->flags = X509_TRUST_DYNAMIC;
- } else
- trtmp = X509_TRUST_get0(idx);
+ } else if (!(trtmp = X509_TRUST_get0(idx))) {
+ X509err(X509_F_X509_TRUST_ADD, ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
/* OPENSSL_free existing name if dynamic */
if (trtmp->flags & X509_TRUST_DYNAMIC_NAME)
diff --git a/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c b/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c
index 5bf3f07a..96f306b2 100644
--- a/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c
+++ b/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c
@@ -984,7 +984,8 @@ static int check_cert(X509_STORE_CTX *ctx)
{
X509_CRL *crl = NULL, *dcrl = NULL;
X509 *x;
- int ok, cnum;
+ int ok = 0; /* current openssl sets 'ok' to zero here */
+ int cnum;
unsigned int last_reasons;
cnum = ctx->error_depth;
x = sk_X509_value(ctx->chain, cnum);
diff --git a/Cryptlib/SysCall/BaseStrings.c b/Cryptlib/SysCall/BaseStrings.c
index 252e6db3..29a16100 100644
--- a/Cryptlib/SysCall/BaseStrings.c
+++ b/Cryptlib/SysCall/BaseStrings.c
@@ -1,9 +1,9 @@
#include <OpenSslSupport.h>
-char *
-AsciiStrCat(char *Destination, char *Source)
+CHAR8 *
+AsciiStrCat(CHAR8 *Destination, const CHAR8 *Source)
{
- UINTN dest_len = strlena((CHAR8 *)Destination);
+ UINTN dest_len = strlen((CHAR8 *)Destination);
UINTN i;
for (i = 0; Source[i] != '\0'; i++)
@@ -14,7 +14,7 @@ AsciiStrCat(char *Destination, char *Source)
}
CHAR8 *
-AsciiStrCpy(CHAR8 *Destination, CHAR8 *Source)
+AsciiStrCpy(CHAR8 *Destination, const CHAR8 *Source)
{
UINTN i;
@@ -25,8 +25,8 @@ AsciiStrCpy(CHAR8 *Destination, CHAR8 *Source)
return Destination;
}
-char *
-AsciiStrnCpy(char *Destination, char *Source, UINTN count)
+CHAR8 *
+AsciiStrnCpy(CHAR8 *Destination, const CHAR8 *Source, UINTN count)
{
UINTN i;
@@ -59,45 +59,15 @@ WriteUnaligned32(UINT32 *Buffer, UINT32 Value)
}
UINTN
-AsciiStrSize(CHAR8 *string)
+AsciiStrSize(const CHAR8 *string)
{
- return strlena(string) + 1;
-}
-
-int
-strcmp (const char *str1, const char *str2)
-{
- return strcmpa((CHAR8 *)str1,(CHAR8 *)str2);
-}
-
-inline static char
-toupper (char c)
-{
- return ((c >= 'a' && c <= 'z') ? c - ('a' - 'A') : c);
-}
-
-/* Based on AsciiStriCmp() in edk2 MdePkg/Library/BaseLib/String.c */
-int
-strcasecmp (const char *str1, const char *str2)
-{
- char c1, c2;
-
- c1 = toupper (*str1);
- c2 = toupper (*str2);
- while ((*str1 != '\0') && (c1 == c2)) {
- str1++;
- str2++;
- c1 = toupper (*str1);
- c2 = toupper (*str2);
- }
-
- return c1 - c2;
+ return strlen(string) + 1;
}
/* Based on AsciiStrDecimalToUintnS() in edk2
* MdePkg/Library/BaseLib/SafeString.c */
UINTN
-AsciiStrDecimalToUintn(const char *String)
+AsciiStrDecimalToUintn(const CHAR8 *String)
{
UINTN Result;
diff --git a/Cryptlib/SysCall/CrtWrapper.c b/Cryptlib/SysCall/CrtWrapper.c
index 698e1eef..4bdaede9 100644
--- a/Cryptlib/SysCall/CrtWrapper.c
+++ b/Cryptlib/SysCall/CrtWrapper.c
@@ -121,21 +121,6 @@ QuickSortWorker (
// -- String Manipulation Routines --
//
-/* Scan a string for the last occurrence of a character */
-char *strrchr (const char *str, int c)
-{
- char * save;
-
- for (save = NULL; ; ++str) {
- if (*str == c) {
- save = (char *)str;
- }
- if (*str == 0) {
- return (save);
- }
- }
-}
-
/* Read formatted data from a string */
int sscanf (const char *buffer, const char *format, ...)
{
@@ -147,59 +132,6 @@ int sscanf (const char *buffer, const char *format, ...)
}
//
-// -- Character Classification Routines --
-//
-
-/* Determines if a particular character is a decimal-digit character */
-int isdigit (int c)
-{
- //
- // <digit> ::= [0-9]
- //
- return (('0' <= (c)) && ((c) <= '9'));
-}
-
-/* Determine if an integer represents character that is a hex digit */
-int isxdigit (int c)
-{
- //
- // <hexdigit> ::= [0-9] | [a-f] | [A-F]
- //
- return ((('0' <= (c)) && ((c) <= '9')) ||
- (('a' <= (c)) && ((c) <= 'f')) ||
- (('A' <= (c)) && ((c) <= 'F')));
-}
-
-/* Determines if a particular character represents a space character */
-int isspace (int c)
-{
- //
- // <space> ::= [ ]
- //
- return ((c) == ' ');
-}
-
-/* Determine if a particular character is an alphanumeric character */
-int isalnum (int c)
-{
- //
- // <alnum> ::= [0-9] | [a-z] | [A-Z]
- //
- return ((('0' <= (c)) && ((c) <= '9')) ||
- (('a' <= (c)) && ((c) <= 'z')) ||
- (('A' <= (c)) && ((c) <= 'Z')));
-}
-
-/* Determines if a particular character is in upper case */
-int isupper (int c)
-{
- //
- // <uppercase letter> := [A-Z]
- //
- return (('A' <= (c)) && ((c) <= 'Z'));
-}
-
-//
// -- Data Conversion Routines --
//
@@ -223,15 +155,6 @@ unsigned long strtoul (const char *nptr, char **endptr, int base)
return 0;
}
-/* Convert character to lowercase */
-int tolower (int c)
-{
- if (('A' <= (c)) && ((c) <= 'Z')) {
- return (c - ('A' - 'a'));
- }
- return (c);
-}
-
//
// -- Searching and Sorting Routines --
//
@@ -424,11 +347,6 @@ int stat (const char *c, struct stat *s)
return -1;
}
-int strncasecmp (const char *c, const char *s, size_t l)
-{
- return 0;
-}
-
void syslog (int a, const char *c, ...)
{
diff --git a/Cryptlib/SysCall/memset.c b/Cryptlib/SysCall/memset.c
deleted file mode 100644
index 76deed68..00000000
--- a/Cryptlib/SysCall/memset.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2016 SUSE LINUX GmbH <glin@suse.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <efi.h>
-#include <efilib.h>
-
-typedef UINTN size_t;
-
-void *
-memset (void *dest, int ch, size_t count)
-{
- SetMem(dest, count, (UINT8)(ch));
- return dest;
-}