summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/mem_clr.c
diff options
context:
space:
mode:
authordjm <>2008-09-06 12:15:56 +0000
committerdjm <>2008-09-06 12:15:56 +0000
commit5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80 (patch)
treeaba68249883aa9d2361d92eef69a81d0c4961732 /src/lib/libcrypto/mem_clr.c
parentf6198d4d0ab97685dc56be2d48715ed39fcc74b9 (diff)
downloadopenbsd-5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80.tar.gz
openbsd-5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80.tar.bz2
openbsd-5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80.zip
import of OpenSSL 0.9.8h
Diffstat (limited to 'src/lib/libcrypto/mem_clr.c')
-rw-r--r--src/lib/libcrypto/mem_clr.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/lib/libcrypto/mem_clr.c b/src/lib/libcrypto/mem_clr.c
index e4b7f540b0..add1f78020 100644
--- a/src/lib/libcrypto/mem_clr.c
+++ b/src/lib/libcrypto/mem_clr.c
@@ -64,12 +64,14 @@ unsigned char cleanse_ctr = 0;
64void OPENSSL_cleanse(void *ptr, size_t len) 64void OPENSSL_cleanse(void *ptr, size_t len)
65 { 65 {
66 unsigned char *p = ptr; 66 unsigned char *p = ptr;
67 size_t loop = len; 67 size_t loop = len, ctr = cleanse_ctr;
68 while(loop--) 68 while(loop--)
69 { 69 {
70 *(p++) = cleanse_ctr; 70 *(p++) = (unsigned char)ctr;
71 cleanse_ctr += (17 + (unsigned char)((int)p & 0xF)); 71 ctr += (17 + ((size_t)p & 0xF));
72 } 72 }
73 if(memchr(ptr, cleanse_ctr, len)) 73 p=memchr(ptr, (unsigned char)ctr, len);
74 cleanse_ctr += 63; 74 if(p)
75 ctr += (63 + (size_t)p);
76 cleanse_ctr = (unsigned char)ctr;
75 } 77 }