projects
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add fix for CVE-2013-4353
[openssl.git]
/
ssl
/
s3_both.c
diff --git
a/ssl/s3_both.c
b/ssl/s3_both.c
index 76258b3c5cf81c6e0949e07514c14c4f78fed2f9..0a259b1f4f6cbbace47c844b0428a1157fe0e15e 100644
(file)
--- a/
ssl/s3_both.c
+++ b/
ssl/s3_both.c
@@
-160,6
+160,8
@@
int ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen)
i=s->method->ssl3_enc->final_finish_mac(s,
sender,slen,s->s3->tmp.finish_md);
i=s->method->ssl3_enc->final_finish_mac(s,
sender,slen,s->s3->tmp.finish_md);
+ if (i == 0)
+ return 0;
s->s3->tmp.finish_md_len = i;
memcpy(p, s->s3->tmp.finish_md, i);
l=i;
s->s3->tmp.finish_md_len = i;
memcpy(p, s->s3->tmp.finish_md, i);
l=i;
@@
-201,7
+203,11
@@
static void ssl3_take_mac(SSL *s)
{
const char *sender;
int slen;
{
const char *sender;
int slen;
-
+ /* If no new cipher setup return immediately: other functions will
+ * set the appropriate error.
+ */
+ if (s->s3->tmp.new_cipher == NULL)
+ return;
if (s->state & SSL_ST_CONNECT)
{
sender=s->method->ssl3_enc->server_finished_label;
if (s->state & SSL_ST_CONNECT)
{
sender=s->method->ssl3_enc->server_finished_label;