mirror of
https://xff.cz/git/u-boot/
synced 2025-09-29 22:41:17 +02:00
initial
This commit is contained in:
83
lib/openssl/CRYPTO_malloc.c
Executable file
83
lib/openssl/CRYPTO_malloc.c
Executable file
@@ -0,0 +1,83 @@
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user