diff options
| author | Gary Ching-Pang Lin <glin@suse.com> | 2015-07-28 11:46:38 -0400 |
|---|---|---|
| committer | Peter Jones <pjones@redhat.com> | 2015-07-28 11:46:38 -0400 |
| commit | 5ce38c90cf43ee79cd999716ea83a5a44eeb819e (patch) | |
| tree | 2fb3d9dd667c772fae5f87fa61e1501cf12da0ce /Cryptlib/OpenSSL/crypto/mem.c | |
| parent | 69ba24ff72921ecabbb47178de40dc5a79350040 (diff) | |
| download | efi-boot-shim-5ce38c90cf43ee79cd999716ea83a5a44eeb819e.tar.gz efi-boot-shim-5ce38c90cf43ee79cd999716ea83a5a44eeb819e.zip | |
Update openssl to 1.0.2d
Also update Cryptlib to edk2 r17731
Signed-off-by: Gary Ching-Pang Lin <glin@suse.com>
Diffstat (limited to 'Cryptlib/OpenSSL/crypto/mem.c')
| -rw-r--r-- | Cryptlib/OpenSSL/crypto/mem.c | 87 |
1 files changed, 33 insertions, 54 deletions
diff --git a/Cryptlib/OpenSSL/crypto/mem.c b/Cryptlib/OpenSSL/crypto/mem.c index 0620a51f..fdad49b7 100644 --- a/Cryptlib/OpenSSL/crypto/mem.c +++ b/Cryptlib/OpenSSL/crypto/mem.c @@ -107,7 +107,7 @@ static void (*free_locked_func) (void *) = free; /* may be changed as long as 'allow_customize_debug' is set */ /* XXX use correct function pointer types */ -#if defined(CRYPTO_MDEBUG) && !defined(OPENSSL_FIPS) +#ifdef CRYPTO_MDEBUG /* use default functions from mem_dbg.c */ static void (*malloc_debug_func) (void *, int, const char *, int, int) = CRYPTO_dbg_malloc; @@ -117,14 +117,6 @@ static void (*realloc_debug_func) (void *, void *, int, const char *, int, static void (*free_debug_func) (void *, int) = CRYPTO_dbg_free; static void (*set_debug_options_func) (long) = CRYPTO_dbg_set_options; static long (*get_debug_options_func) (void) = CRYPTO_dbg_get_options; - -static int (*push_info_func) (const char *info, const char *file, int line) - = CRYPTO_dbg_push_info; -static int (*pop_info_func) (void) - = CRYPTO_dbg_pop_info; -static int (*remove_all_info_func) (void) - = CRYPTO_dbg_remove_all_info; - #else /* * applications can use CRYPTO_malloc_debug_init() to select above case at @@ -137,17 +129,13 @@ static void (*realloc_debug_func) (void *, void *, int, const char *, int, static void (*free_debug_func) (void *, int) = NULL; static void (*set_debug_options_func) (long) = NULL; static long (*get_debug_options_func) (void) = NULL; - -static int (*push_info_func) (const char *info, const char *file, int line) - = NULL; -static int (*pop_info_func) (void) = NULL; -static int (*remove_all_info_func) (void) = NULL; - #endif int CRYPTO_set_mem_functions(void *(*m) (size_t), void *(*r) (void *, size_t), void (*f) (void *)) { + /* Dummy call just to ensure OPENSSL_init() gets linked in */ + OPENSSL_init(); if (!allow_customize) return 0; if ((m == 0) || (r == 0) || (f == 0)) @@ -216,6 +204,7 @@ int CRYPTO_set_mem_debug_functions(void (*m) { if (!allow_customize_debug) return 0; + OPENSSL_init(); malloc_debug_func = m; realloc_debug_func = r; free_debug_func = f; @@ -224,16 +213,6 @@ int CRYPTO_set_mem_debug_functions(void (*m) return 1; } -void CRYPTO_set_mem_info_functions(int (*push_info_fn) - (const char *info, const char *file, - int line), int (*pop_info_fn) (void), - int (*remove_all_info_fn) (void)) -{ - push_info_func = push_info_fn; - pop_info_func = pop_info_fn; - remove_all_info_func = remove_all_info_fn; -} - void CRYPTO_get_mem_functions(void *(**m) (size_t), void *(**r) (void *, size_t), void (**f) (void *)) @@ -301,14 +280,15 @@ void CRYPTO_get_mem_debug_functions(void (**m) void *CRYPTO_malloc_locked(int num, const char *file, int line) { void *ret = NULL; - extern unsigned char cleanse_ctr; if (num <= 0) return NULL; - allow_customize = 0; + if (allow_customize) + allow_customize = 0; if (malloc_debug_func != NULL) { - allow_customize_debug = 0; + if (allow_customize_debug) + allow_customize_debug = 0; malloc_debug_func(NULL, num, file, line, 0); } ret = malloc_locked_ex_func(num, file, line); @@ -318,13 +298,17 @@ void *CRYPTO_malloc_locked(int num, const char *file, int line) if (malloc_debug_func != NULL) malloc_debug_func(ret, num, file, line, 1); +#ifndef OPENSSL_CPUID_OBJ /* * Create a dependency on the value of 'cleanse_ctr' so our memory * sanitisation function can't be optimised out. NB: We only do this for * >2Kb so the overhead doesn't bother us. */ - if (ret && (num > 2048)) + if (ret && (num > 2048)) { + extern unsigned char cleanse_ctr; ((unsigned char *)ret)[0] = cleanse_ctr; + } +#endif return ret; } @@ -344,14 +328,15 @@ void CRYPTO_free_locked(void *str) void *CRYPTO_malloc(int num, const char *file, int line) { void *ret = NULL; - extern unsigned char cleanse_ctr; if (num <= 0) return NULL; - allow_customize = 0; + if (allow_customize) + allow_customize = 0; if (malloc_debug_func != NULL) { - allow_customize_debug = 0; + if (allow_customize_debug) + allow_customize_debug = 0; malloc_debug_func(NULL, num, file, line, 0); } ret = malloc_ex_func(num, file, line); @@ -361,17 +346,32 @@ void *CRYPTO_malloc(int num, const char *file, int line) if (malloc_debug_func != NULL) malloc_debug_func(ret, num, file, line, 1); +#ifndef OPENSSL_CPUID_OBJ /* * Create a dependency on the value of 'cleanse_ctr' so our memory * sanitisation function can't be optimised out. NB: We only do this for * >2Kb so the overhead doesn't bother us. */ - if (ret && (num > 2048)) + if (ret && (num > 2048)) { + extern unsigned char cleanse_ctr; ((unsigned char *)ret)[0] = cleanse_ctr; + } +#endif return ret; } +char *CRYPTO_strdup(const char *str, const char *file, int line) +{ + char *ret = CRYPTO_malloc(strlen(str) + 1, file, line); + + if (ret == NULL) + return NULL; + + strcpy(ret, str); + return ret; +} + void *CRYPTO_realloc(void *str, int num, const char *file, int line) { void *ret = NULL; @@ -464,24 +464,3 @@ long CRYPTO_get_mem_debug_options(void) return get_debug_options_func(); return 0; } - -int CRYPTO_push_info_(const char *info, const char *file, int line) -{ - if (push_info_func) - return push_info_func(info, file, line); - return 1; -} - -int CRYPTO_pop_info(void) -{ - if (pop_info_func) - return pop_info_func(); - return 1; -} - -int CRYPTO_remove_all_info(void) -{ - if (remove_all_info_func) - return remove_all_info_func(); - return 1; -} |
