sdk-hwV1.3/lichee/brandy-2.0/u-boot-2018/lib/openssl/CRYPTO_malloc.c

84 lines
1.4 KiB
C

#include "crypto.h"
#include "cryptlib.h"
#include "lhash.h"
#include "myfunction.h"
unsigned char cleanse_ctr = 0;
void OPENSSL_cleanse(void *ptr, size_t len)
{
unsigned char *p = ptr;
size_t loop = len, ctr = cleanse_ctr;
while (loop--) {
*(p++) = (unsigned char)ctr;
ctr += (17 + ((size_t)p & 0xF));
}
p = memchr(ptr, (unsigned char)ctr, len);
if (p)
ctr += (63 + (size_t)p);
cleanse_ctr = (unsigned char)ctr;
}
void *CRYPTO_malloc(int num, const char *file, int line)
{
if (num <= 0)
return NULL;
return malloc(num);
}
void *CRYPTO_realloc(void *str, int num, const char *file, int line)
{
if (str == NULL)
return CRYPTO_malloc(num, file, line);
if (num <= 0)
return NULL;
return realloc(str, num);
}
void *CRYPTO_realloc_clean(void *str, int old_len, int num, const char *file,
int line)
{
void *ret = NULL;
if (str == NULL)
return CRYPTO_malloc(num, file, line);
if (num <= 0)
return NULL;
/* We don't support shrinking the buffer. Note the memcpy that copies
* |old_len| bytes to the new buffer, below. */
if (num < old_len)
return NULL;
ret = malloc(num);
if (ret) {
memcpy(ret, str, old_len);
OPENSSL_cleanse(str, old_len);
free(str);
}
return ret;
}
void CRYPTO_free(void *str)
{
free(str);
}
void *CRYPTO_remalloc(void *a, int num, const char *file, int line)
{
if (a != NULL)
free(a);
a = (char *)malloc(num);
return (a);
}
void reset_CRYPTO_reset(void)
{
cleanse_ctr = 0;
}