/*
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
*
- * Licensed under the OpenSSL license (the "License"). You may not use
+ * Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
#include "e_os.h"
#include "internal/cryptlib.h"
-#include "internal/cryptlib_int.h"
+#include "crypto/cryptlib.h"
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <openssl/crypto.h>
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
-# include <execinfo.h>
-#endif
/*
* the following pointers may be changed as long as 'allow_customize' is set
static void (*free_impl)(void *, const char *, int)
= CRYPTO_free;
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+#if !defined(OPENSSL_NO_CRYPTO_MDEBUG) && !defined(FIPS_MODE)
# include "internal/tsan_assist.h"
static TSAN_QUALIFIER int malloc_count;
static long md_count;
static int md_fail_percent = 0;
static int md_tracefd = -1;
-static int call_malloc_debug = 1;
static void parseit(void);
static int shouldfail(void);
# define FAILTEST() if (shouldfail()) return NULL
#else
-static int call_malloc_debug = 0;
# define INCREMENT(x) /* empty */
# define FAILTEST() /* empty */
return 1;
}
-int CRYPTO_set_mem_debug(int flag)
-{
- if (!allow_customize)
- return 0;
- call_malloc_debug = flag;
- return 1;
-}
-
void CRYPTO_get_mem_functions(
void *(**m)(size_t, const char *, int),
void *(**r)(void *, size_t, const char *, int),
*f = free_impl;
}
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
+#if !defined(OPENSSL_NO_CRYPTO_MDEBUG) && !defined(FIPS_MODE)
void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount)
{
if (mcount != NULL)
len = strlen(buff);
if (write(md_tracefd, buff, len) != len)
perror("shouldfail write failed");
-# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
- if (shoulditfail) {
- void *addrs[30];
- int num = backtrace(addrs, OSSL_NELEM(addrs));
-
- backtrace_symbols_fd(addrs, num, md_tracefd);
- }
-# endif
}
# endif
*/
allow_customize = 0;
}
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
- if (call_malloc_debug) {
- CRYPTO_mem_debug_malloc(NULL, num, 0, file, line);
- ret = malloc(num);
- CRYPTO_mem_debug_malloc(ret, num, 1, file, line);
- } else {
- ret = malloc(num);
- }
-#else
(void)(file); (void)(line);
ret = malloc(num);
-#endif
return ret;
}
return NULL;
}
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
- if (call_malloc_debug) {
- void *ret;
- CRYPTO_mem_debug_realloc(str, NULL, num, 0, file, line);
- ret = realloc(str, num);
- CRYPTO_mem_debug_realloc(str, ret, num, 1, file, line);
- return ret;
- }
-#else
(void)(file); (void)(line);
-#endif
return realloc(str, num);
}
return;
}
-#ifndef OPENSSL_NO_CRYPTO_MDEBUG
- if (call_malloc_debug) {
- CRYPTO_mem_debug_free(str, 0, file, line);
- free(str);
- CRYPTO_mem_debug_free(str, 1, file, line);
- } else {
- free(str);
- }
-#else
free(str);
-#endif
}
void CRYPTO_clear_free(void *str, size_t num, const char *file, int line)
OPENSSL_cleanse(str, num);
CRYPTO_free(str, file, line);
}
+
+#if !defined(OPENSSL_NO_CRYPTO_MDEBUG)
+
+# ifndef OPENSSL_NO_DEPRECATED_3_0
+int CRYPTO_mem_ctrl(int mode)
+{
+ (void)mode;
+ return -1;
+}
+
+int CRYPTO_set_mem_debug(int flag)
+{
+ (void)flag;
+ return -1;
+}
+
+int CRYPTO_mem_debug_push(const char *info, const char *file, int line)
+{
+ (void)info; (void)file; (void)line;
+ return -1;
+}
+
+int CRYPTO_mem_debug_pop(void)
+{
+ return -1;
+}
+
+void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag,
+ const char *file, int line)
+{
+ (void)addr; (void)num; (void)flag; (void)file; (void)line;
+}
+
+void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag,
+ const char *file, int line)
+{
+ (void)addr1; (void)addr2; (void)num; (void)flag; (void)file; (void)line;
+}
+
+void CRYPTO_mem_debug_free(void *addr, int flag,
+ const char *file, int line)
+{
+ (void)addr; (void)flag; (void)file; (void)line;
+}
+
+int CRYPTO_mem_leaks(BIO *b)
+{
+ (void)b;
+ return -1;
+}
+
+# ifndef OPENSSL_NO_STDIO
+int CRYPTO_mem_leaks_fp(FILE *fp)
+{
+ (void)fp;
+ return -1;
+}
+# endif
+
+int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u),
+ void *u)
+{
+ (void)cb; (void)u;
+ return -1;
+}
+
+# endif
+
+#endif