summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-03-09 13:59:58 +0000
committerMatt Caswell <matt@openssl.org>2015-03-11 10:45:23 +0000
commit35fafc4dbc0b3a717ad1b208fe2867e8c64867de (patch)
tree92687f69e0f8e03c263a3bb8a8827eaa10a4e8f2
parent0c14565c5b7683e4bd47cf299b2f6d4bc26d61aa (diff)
Cleanse buffers
Cleanse various intermediate buffers used by the PRF (backported version from master). Reviewed-by: Richard Levitte <levitte@openssl.org>
-rw-r--r--ssl/s3_enc.c1
-rw-r--r--ssl/t1_enc.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/ssl/s3_enc.c b/ssl/s3_enc.c
index cdbf0f095f..cda2d8c776 100644
--- a/ssl/s3_enc.c
+++ b/ssl/s3_enc.c
@@ -877,6 +877,7 @@ int ssl3_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,
s, s->msg_callback_arg);
}
#endif
+ OPENSSL_cleanse(buf, sizeof buf);
return (ret);
}
diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c
index a563fe4615..84f589606b 100644
--- a/ssl/t1_enc.c
+++ b/ssl/t1_enc.c
@@ -976,6 +976,8 @@ int tls1_final_finish_mac(SSL *s,
err = 1;
EVP_MD_CTX_cleanup(&ctx);
+ OPENSSL_cleanse(buf, (int)(q - buf));
+ OPENSSL_cleanse(buf2, sizeof(buf2));
if (err)
return 0;
else
@@ -1139,6 +1141,7 @@ int tls1_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,
co, col,
s->s3->server_random, SSL3_RANDOM_SIZE,
so, sol, p, len, s->session->master_key, buff, sizeof buff);
+ OPENSSL_cleanse(buff, sizeof buff);
#ifdef SSL_DEBUG
fprintf(stderr, "Premaster Secret:\n");
BIO_dump_fp(stderr, (char *)p, len);
@@ -1249,6 +1252,8 @@ int tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen,
NULL, 0,
s->session->master_key, s->session->master_key_length,
out, buff, olen);
+ OPENSSL_cleanse(val, vallen);
+ OPENSSL_cleanse(buff, olen);
#ifdef KSSL_DEBUG
fprintf(stderr, "tls1_export_keying_material() complete\n");