mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
Merge pull request #1041 from dgarske/armc0
Fixes for building with custom options
This commit is contained in:
@@ -177,10 +177,8 @@
|
||||
#include <wolfssl/certs_test.h>
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_BLAKE2
|
||||
#include <wolfssl/wolfcrypt/blake2.h>
|
||||
void bench_blake2(void);
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
@@ -190,62 +188,6 @@
|
||||
|
||||
#include "wolfcrypt/benchmark/benchmark.h"
|
||||
|
||||
void bench_des(int);
|
||||
void bench_idea(void);
|
||||
void bench_arc4(int);
|
||||
void bench_hc128(void);
|
||||
void bench_rabbit(void);
|
||||
void bench_chacha(void);
|
||||
void bench_chacha20_poly1305_aead(void);
|
||||
void bench_aescbc(int);
|
||||
void bench_aesgcm(int);
|
||||
void bench_aesccm(void);
|
||||
void bench_aesctr(void);
|
||||
void bench_poly1305(void);
|
||||
void bench_camellia(void);
|
||||
|
||||
void bench_md5(int);
|
||||
void bench_sha(int);
|
||||
void bench_sha224(int);
|
||||
void bench_sha256(int);
|
||||
void bench_sha384(int);
|
||||
void bench_sha512(int);
|
||||
void bench_sha3_224(int);
|
||||
void bench_sha3_256(int);
|
||||
void bench_sha3_384(int);
|
||||
void bench_sha3_512(int);
|
||||
int bench_ripemd(void);
|
||||
void bench_cmac(void);
|
||||
void bench_scrypt(void);
|
||||
|
||||
void bench_rsaKeyGen(int);
|
||||
void bench_rsa(int);
|
||||
void bench_dh(int);
|
||||
#ifdef HAVE_ECC
|
||||
void bench_eccMakeKey(int);
|
||||
void bench_ecc(int);
|
||||
#ifdef HAVE_ECC_ENCRYPT
|
||||
void bench_eccEncrypt(void);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAVE_CURVE25519
|
||||
void bench_curve25519KeyGen(void);
|
||||
#ifdef HAVE_CURVE25519_SHARED_SECRET
|
||||
void bench_curve25519KeyAgree(void);
|
||||
#endif /* HAVE_CURVE25519_SHARED_SECRET */
|
||||
#endif /* HAVE_CURVE25519 */
|
||||
#ifdef HAVE_ED25519
|
||||
void bench_ed25519KeyGen(void);
|
||||
void bench_ed25519KeySign(void);
|
||||
#endif
|
||||
#ifdef HAVE_NTRU
|
||||
void bench_ntru(void);
|
||||
void bench_ntruKeyGen(void);
|
||||
#endif
|
||||
#ifndef WC_NO_RNG
|
||||
void bench_rng(void);
|
||||
#endif /* WC_NO_RNG */
|
||||
|
||||
#ifdef WOLFSSL_CURRTIME_REMAP
|
||||
#define current_time WOLFSSL_CURRTIME_REMAP
|
||||
#elif !defined(HAVE_STACK_SIZE)
|
||||
@@ -954,13 +896,7 @@ static void* benchmarks_do(void* args)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/* so embedded projects can pull in tests on their own */
|
||||
#ifdef HAVE_STACK_SIZE
|
||||
THREAD_RETURN WOLFSSL_THREAD benchmark_test(void* args)
|
||||
#else
|
||||
int benchmark_test(void *args)
|
||||
#endif
|
||||
int benchmark_init(void)
|
||||
{
|
||||
int ret = 0;
|
||||
int block_size;
|
||||
@@ -970,13 +906,13 @@ int benchmark_test(void *args)
|
||||
WOLFMEM_GENERAL, 1);
|
||||
if (ret != 0) {
|
||||
printf("unable to load static memory %d\n", ret);
|
||||
EXIT_TEST(EXIT_FAILURE);
|
||||
}
|
||||
#endif /* WOLFSSL_STATIC_MEMORY */
|
||||
|
||||
(void)args;
|
||||
|
||||
wolfCrypt_Init();
|
||||
if ((ret = wolfCrypt_Init()) != 0) {
|
||||
printf("wolfCrypt_Init failed %d\n", ret);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
bench_stats_init();
|
||||
|
||||
@@ -991,7 +927,6 @@ int benchmark_test(void *args)
|
||||
ret = wc_InitNetRandom(wnrConfigFile, NULL, 5000);
|
||||
if (ret != 0) {
|
||||
printf("Whitewood netRandom config init failed %d\n", ret);
|
||||
EXIT_TEST(EXIT_FAILURE);
|
||||
}
|
||||
#endif /* HAVE_WNR */
|
||||
|
||||
@@ -1004,8 +939,11 @@ int benchmark_test(void *args)
|
||||
bench_plain = (byte*)XMALLOC(block_size, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
bench_cipher = (byte*)XMALLOC(block_size, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
if (bench_plain == NULL || bench_cipher == NULL) {
|
||||
XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
|
||||
printf("Benchmark block buffer alloc failed!\n");
|
||||
EXIT_TEST(EXIT_FAILURE);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
XMEMSET(bench_plain, 0, block_size);
|
||||
XMEMSET(bench_cipher, 0, block_size);
|
||||
@@ -1014,8 +952,11 @@ int benchmark_test(void *args)
|
||||
bench_key = (byte*)XMALLOC(sizeof(bench_key_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
bench_iv = (byte*)XMALLOC(sizeof(bench_iv_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
if (bench_key == NULL || bench_iv == NULL) {
|
||||
XFREE(bench_key, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
XFREE(bench_iv, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
|
||||
printf("Benchmark cipher buffer alloc failed!\n");
|
||||
EXIT_TEST(EXIT_FAILURE);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
XMEMCPY(bench_key, bench_key_buf, sizeof(bench_key_buf));
|
||||
XMEMCPY(bench_iv, bench_iv_buf, sizeof(bench_iv_buf));
|
||||
@@ -1023,6 +964,50 @@ int benchmark_test(void *args)
|
||||
(void)bench_key;
|
||||
(void)bench_iv;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int benchmark_free(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||
XFREE(bench_key, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
XFREE(bench_iv, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WNR
|
||||
ret = wc_FreeNetRandom();
|
||||
if (ret < 0) {
|
||||
printf("Failed to free netRandom context %d\n", ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
bench_stats_free();
|
||||
|
||||
if ((ret = wolfCrypt_Cleanup()) != 0) {
|
||||
printf("error %d with wolfCrypt_Cleanup\n", ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* so embedded projects can pull in tests on their own */
|
||||
#ifdef HAVE_STACK_SIZE
|
||||
THREAD_RETURN WOLFSSL_THREAD benchmark_test(void* args)
|
||||
#else
|
||||
int benchmark_test(void *args)
|
||||
#endif
|
||||
{
|
||||
int ret;
|
||||
|
||||
(void)args;
|
||||
|
||||
ret = benchmark_init();
|
||||
if (ret != 0)
|
||||
EXIT_TEST(ret);
|
||||
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT) && !defined(WC_NO_ASYNC_THREADING)
|
||||
{
|
||||
@@ -1060,26 +1045,7 @@ int benchmark_test(void *args)
|
||||
benchmarks_do(NULL);
|
||||
#endif
|
||||
|
||||
XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||
XFREE(bench_key, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
XFREE(bench_iv, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WNR
|
||||
ret = wc_FreeNetRandom();
|
||||
if (ret < 0) {
|
||||
printf("Failed to free netRandom context %d\n", ret);
|
||||
EXIT_TEST(EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
|
||||
bench_stats_free();
|
||||
|
||||
if (wolfCrypt_Cleanup() != 0) {
|
||||
printf("error with wolfCrypt_Cleanup\n");
|
||||
}
|
||||
ret = benchmark_free();
|
||||
|
||||
EXIT_TEST(ret);
|
||||
}
|
||||
@@ -2136,7 +2102,7 @@ void bench_sha3_224(int doAsync)
|
||||
Sha3 hash[BENCH_MAX_PENDING];
|
||||
double start;
|
||||
int ret, i, count = 0, times;
|
||||
DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, SHA224_DIGEST_SIZE, HEAP_HINT);
|
||||
DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, SHA3_224_DIGEST_SIZE, HEAP_HINT);
|
||||
|
||||
bench_async_begin();
|
||||
|
||||
|
@@ -28,14 +28,60 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* run all benchmark entry */
|
||||
#ifdef HAVE_STACK_SIZE
|
||||
THREAD_RETURN WOLFSSL_THREAD benchmark_test(void* args);
|
||||
#else
|
||||
int benchmark_test(void *args);
|
||||
#endif
|
||||
|
||||
/* individual benchmarks */
|
||||
int benchmark_init(void);
|
||||
int benchmark_free(void);
|
||||
void benchmark_configure(int block_size);
|
||||
|
||||
void bench_des(int);
|
||||
void bench_idea(void);
|
||||
void bench_arc4(int);
|
||||
void bench_hc128(void);
|
||||
void bench_rabbit(void);
|
||||
void bench_chacha(void);
|
||||
void bench_chacha20_poly1305_aead(void);
|
||||
void bench_aescbc(int);
|
||||
void bench_aesgcm(int);
|
||||
void bench_aesccm(void);
|
||||
void bench_aesctr(void);
|
||||
void bench_poly1305(void);
|
||||
void bench_camellia(void);
|
||||
void bench_md5(int);
|
||||
void bench_sha(int);
|
||||
void bench_sha224(int);
|
||||
void bench_sha256(int);
|
||||
void bench_sha384(int);
|
||||
void bench_sha512(int);
|
||||
void bench_sha3_224(int);
|
||||
void bench_sha3_256(int);
|
||||
void bench_sha3_384(int);
|
||||
void bench_sha3_512(int);
|
||||
int bench_ripemd(void);
|
||||
void bench_cmac(void);
|
||||
void bench_scrypt(void);
|
||||
void bench_rsaKeyGen(int);
|
||||
void bench_rsa(int);
|
||||
void bench_dh(int);
|
||||
void bench_eccMakeKey(int);
|
||||
void bench_ecc(int);
|
||||
void bench_eccEncrypt(void);
|
||||
void bench_curve25519KeyGen(void);
|
||||
void bench_curve25519KeyAgree(void);
|
||||
void bench_ed25519KeyGen(void);
|
||||
void bench_ed25519KeySign(void);
|
||||
void bench_ntru(void);
|
||||
void bench_ntruKeyGen(void);
|
||||
void bench_rng(void);
|
||||
void bench_blake2(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
@@ -1806,8 +1806,6 @@ int GetObjectId(const byte* input, word32* inOutIdx, word32* oid,
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#if defined(HAVE_ECC) || (!defined(NO_RSA) && !defined(HAVE_USER_RSA) && (defined(OPENSSL_EXTRA) || defined(RSA_DECODE_EXTRA)))
|
||||
static int SkipObjectId(const byte* input, word32* inOutIdx, word32 maxIdx)
|
||||
{
|
||||
word32 idx = *inOutIdx;
|
||||
@@ -1823,7 +1821,6 @@ static int SkipObjectId(const byte* input, word32* inOutIdx, word32 maxIdx)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
WOLFSSL_LOCAL int GetAlgoId(const byte* input, word32* inOutIdx, word32* oid,
|
||||
word32 oidType, word32 maxIdx)
|
||||
|
@@ -544,6 +544,9 @@ int wc_InitRng_ex(WC_RNG* rng, void* heap, int devId)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
#ifdef CUSTOM_RAND_GENERATE_BLOCK
|
||||
ret = 0; /* success */
|
||||
#else
|
||||
#ifdef HAVE_HASHDRBG
|
||||
if (wc_RNG_HealthTestLocal(0) == 0) {
|
||||
DECLARE_VAR(entropy, byte, ENTROPY_NONCE_SZ, rng->heap);
|
||||
@@ -587,6 +590,7 @@ int wc_InitRng_ex(WC_RNG* rng, void* heap, int devId)
|
||||
rng->status = DRBG_FAILED;
|
||||
}
|
||||
#endif /* HAVE_HASHDRBG */
|
||||
#endif /* CUSTOM_RAND_GENERATE_BLOCK */
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -625,8 +629,8 @@ int wc_RNG_GenerateBlock(WC_RNG* rng, byte* output, word32 sz)
|
||||
|
||||
#ifdef CUSTOM_RAND_GENERATE_BLOCK
|
||||
XMEMSET(output, 0, sz);
|
||||
return CUSTOM_RAND_GENERATE_BLOCK(output, sz);
|
||||
#endif
|
||||
ret = CUSTOM_RAND_GENERATE_BLOCK(output, sz);
|
||||
#else
|
||||
|
||||
#ifdef HAVE_HASHDRBG
|
||||
if (sz > RNG_MAX_BLOCK_LEN)
|
||||
@@ -674,6 +678,7 @@ int wc_RNG_GenerateBlock(WC_RNG* rng, byte* output, word32 sz)
|
||||
ret = RNG_FAILURE_E;
|
||||
|
||||
#endif /* HAVE_HASHDRBG */
|
||||
#endif /* CUSTOM_RAND_GENERATE_BLOCK */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@@ -55,6 +55,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(USE_WOLFSSL_MEMORY) && defined(WOLFSSL_TRACK_MEMORY)
|
||||
#include <wolfssl/wolfcrypt/memory.h>
|
||||
#include <wolfssl/wolfcrypt/mem_track.h>
|
||||
#endif
|
||||
|
||||
|
@@ -32,8 +32,8 @@
|
||||
|
||||
#ifndef NO_CRYPT_TEST
|
||||
|
||||
#include <wolfssl/wolfcrypt/memory.h>
|
||||
#ifdef WOLFSSL_STATIC_MEMORY
|
||||
#include <wolfssl/wolfcrypt/memory.h>
|
||||
static WOLFSSL_HEAP_HINT* HEAP_HINT;
|
||||
#else
|
||||
#define HEAP_HINT NULL
|
||||
@@ -310,7 +310,7 @@ int memcb_test(void);
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
WOLFSSL_API int wolfSSL_Debugging_ON();
|
||||
WOLFSSL_API int wolfSSL_Debugging_ON(void);
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
@@ -402,7 +402,8 @@ int wolfcrypt_test(void* args)
|
||||
if (CheckCtcSettings() != 1)
|
||||
return err_sys("Build vs runtime math mismatch\n", -1000);
|
||||
|
||||
#ifdef USE_FAST_MATH
|
||||
#if defined(USE_FAST_MATH) && \
|
||||
(!defined(NO_RSA) || !defined(NO_DH) || defined(HAVE_ECC))
|
||||
if (CheckFastMathSettings() != 1)
|
||||
return err_sys("Build vs runtime fastmath FP_MAX_BITS mismatch\n",
|
||||
-1001);
|
||||
@@ -2029,8 +2030,8 @@ int hash_test(void)
|
||||
byte data[] = "0123456789abcdef0123456789abcdef012345";
|
||||
byte out[MAX_DIGEST_SIZE];
|
||||
enum wc_HashType typesGood[] = { WC_HASH_TYPE_MD5, WC_HASH_TYPE_SHA,
|
||||
WC_HASH_TYPE_SHA224, WC_HASH_TYPE_SHA384,
|
||||
WC_HASH_TYPE_SHA512, WC_HASH_TYPE_SHA256 };
|
||||
WC_HASH_TYPE_SHA224, WC_HASH_TYPE_SHA256,
|
||||
WC_HASH_TYPE_SHA384, WC_HASH_TYPE_SHA512 };
|
||||
enum wc_HashType typesNoImpl[] = {
|
||||
#ifdef NO_MD5
|
||||
WC_HASH_TYPE_MD5,
|
||||
@@ -6160,6 +6161,7 @@ static int rsa_flatten_test(RsaKey* key)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef NO_SIG_WRAPPER
|
||||
static int rsa_sig_test(RsaKey* key, word32 keyLen, int modLen, WC_RNG* rng)
|
||||
{
|
||||
int ret;
|
||||
@@ -6294,6 +6296,7 @@ static int rsa_sig_test(RsaKey* key, word32 keyLen, int modLen, WC_RNG* rng)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* !NO_SIG_WRAPPER */
|
||||
|
||||
#ifndef HAVE_USER_RSA
|
||||
static int rsa_decode_test(void)
|
||||
@@ -6349,7 +6352,7 @@ static int rsa_decode_test(void)
|
||||
goto done;
|
||||
}
|
||||
/* TODO: probably should fail when length is -1! */
|
||||
ret = wc_RsaPublicKeyDecodeRaw(n, -1, e, sizeof(e), &keyPub);
|
||||
ret = wc_RsaPublicKeyDecodeRaw(n, (word32)-1, e, sizeof(e), &keyPub);
|
||||
if (ret != 0) {
|
||||
ret = -5404;
|
||||
goto done;
|
||||
@@ -6358,7 +6361,7 @@ static int rsa_decode_test(void)
|
||||
ret = wc_InitRsaKey(&keyPub, NULL);
|
||||
if (ret != 0)
|
||||
return -5405;
|
||||
ret = wc_RsaPublicKeyDecodeRaw(n, sizeof(n), e, -1, &keyPub);
|
||||
ret = wc_RsaPublicKeyDecodeRaw(n, sizeof(n), e, (word32)-1, &keyPub);
|
||||
if (ret != 0) {
|
||||
ret = -5406;
|
||||
goto done;
|
||||
@@ -6612,7 +6615,19 @@ int rsa_test(void)
|
||||
return ret;
|
||||
#endif
|
||||
|
||||
tmp = (byte*)XMALLOC(FOURK_BUF, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#ifdef USE_CERT_BUFFERS_1024
|
||||
bytes = sizeof_client_key_der_1024;
|
||||
if (bytes < (size_t)sizeof_client_cert_der_1024)
|
||||
bytes = sizeof_client_cert_der_1024;
|
||||
#elif defined(USE_CERT_BUFFERS_2048)
|
||||
bytes = sizeof_client_key_der_2048;
|
||||
if (bytes < (size_t)sizeof_client_cert_der_2048)
|
||||
bytes = sizeof_client_cert_der_2048;
|
||||
#else
|
||||
bytes = FOURK_BUF;
|
||||
#endif
|
||||
|
||||
tmp = (byte*)XMALLOC(bytes, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (tmp == NULL
|
||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||
|| out == NULL || plain == NULL
|
||||
@@ -6623,10 +6638,8 @@ int rsa_test(void)
|
||||
|
||||
#ifdef USE_CERT_BUFFERS_1024
|
||||
XMEMCPY(tmp, client_key_der_1024, sizeof_client_key_der_1024);
|
||||
bytes = sizeof_client_key_der_1024;
|
||||
#elif defined(USE_CERT_BUFFERS_2048)
|
||||
XMEMCPY(tmp, client_key_der_2048, sizeof_client_key_der_2048);
|
||||
bytes = sizeof_client_key_der_2048;
|
||||
#elif !defined(NO_FILESYSTEM)
|
||||
file = fopen(clientKey, "rb");
|
||||
if (!file) {
|
||||
@@ -6660,9 +6673,11 @@ int rsa_test(void)
|
||||
ERROR_OUT(-5505, exit_rsa);
|
||||
}
|
||||
|
||||
#ifndef NO_SIG_WRAPPER
|
||||
ret = rsa_sig_test(&key, sizeof(RsaKey), wc_RsaEncryptSize(&key), &rng);
|
||||
if (ret != 0)
|
||||
goto exit_rsa;
|
||||
#endif
|
||||
|
||||
do {
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
|
@@ -90,9 +90,15 @@
|
||||
/* if defined to not using inline then declare function prototypes */
|
||||
#ifdef NO_INLINE
|
||||
#define STATIC
|
||||
WOLFSSL_LOCAL void* TrackMalloc(size_t sz);
|
||||
WOLFSSL_LOCAL void TrackFree(void* ptr);
|
||||
WOLFSSL_LOCAL void* TrackRealloc(void* ptr, size_t sz);
|
||||
#ifdef WOLFSSL_DEBUG_MEMORY
|
||||
WOLFSSL_LOCAL void* TrackMalloc(size_t sz, const char* func, unsigned int line);
|
||||
WOLFSSL_LOCAL void TrackFree(void* ptr, const char* func, unsigned int line);
|
||||
WOLFSSL_LOCAL void* TrackRealloc(void* ptr, size_t sz, const char* func, unsigned int line);
|
||||
#else
|
||||
WOLFSSL_LOCAL void* TrackMalloc(size_t sz);
|
||||
WOLFSSL_LOCAL void TrackFree(void* ptr);
|
||||
WOLFSSL_LOCAL void* TrackRealloc(void* ptr, size_t sz);
|
||||
#endif
|
||||
WOLFSSL_LOCAL int InitMemoryTracker(void);
|
||||
WOLFSSL_LOCAL void ShowMemoryTracker(void);
|
||||
#else
|
||||
|
Reference in New Issue
Block a user