Optimized OPENSSL_cleanse [from HEAD].
This commit is contained in:
@@ -64,12 +64,14 @@ unsigned char cleanse_ctr = 0;
|
|||||||
void OPENSSL_cleanse(void *ptr, size_t len)
|
void OPENSSL_cleanse(void *ptr, size_t len)
|
||||||
{
|
{
|
||||||
unsigned char *p = ptr;
|
unsigned char *p = ptr;
|
||||||
size_t loop = len;
|
size_t loop = len, ctr = cleanse_ctr;
|
||||||
while(loop--)
|
while(loop--)
|
||||||
{
|
{
|
||||||
*(p++) = cleanse_ctr;
|
*(p++) = (unsigned char)ctr;
|
||||||
cleanse_ctr += (17 + (unsigned char)((unsigned long)p & 0xF));
|
ctr += (17 + ((size_t)p & 0xF));
|
||||||
}
|
}
|
||||||
if(memchr(ptr, cleanse_ctr, len))
|
p=memchr(ptr, (unsigned char)ctr, len);
|
||||||
cleanse_ctr += 63;
|
if(p)
|
||||||
|
ctr += (63 + (size_t)p);
|
||||||
|
cleanse_ctr = (unsigned char)ctr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user