summaryrefslogtreecommitdiff
path: root/ssl/s2_srvr.c
diff options
context:
space:
mode:
authorBodo Möller <bodo@openssl.org>2001-11-10 10:44:15 +0000
committerBodo Möller <bodo@openssl.org>2001-11-10 10:44:15 +0000
commit2b90b1f344b50451673f02ae5ba1291779db544a (patch)
treeb457e3bb03b5129403ff40d5ac325b64d46dd619 /ssl/s2_srvr.c
parent65123f8064934df6ab1149d3e0d60441a5699014 (diff)
downloadopenssl-new-2b90b1f344b50451673f02ae5ba1291779db544a.tar.gz
make code a little more similar to what it looked like before the fixes,
call ssl2_part_read again to parse error message
Diffstat (limited to 'ssl/s2_srvr.c')
-rw-r--r--ssl/s2_srvr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ssl/s2_srvr.c b/ssl/s2_srvr.c
index ea07852d1a..58ee38963a 100644
--- a/ssl/s2_srvr.c
+++ b/ssl/s2_srvr.c
@@ -801,10 +801,10 @@ static int get_client_finished(SSL *s)
p=(unsigned char *)s->init_buf->data;
if (s->state == SSL2_ST_GET_CLIENT_FINISHED_A)
{
- i=ssl2_read(s,(char *)&(p[s->init_num]),3-s->init_num);
- if (i < 3-s->init_num)
+ i=ssl2_read(s,(char *)&(p[s->init_num]),1-s->init_num);
+ if (i < 1-s->init_num)
return(ssl2_part_read(s,SSL_F_GET_CLIENT_FINISHED,i));
- s->init_num = 3;
+ s->init_num += i;
if (*p != SSL2_MT_CLIENT_FINISHED)
{
@@ -814,7 +814,12 @@ static int get_client_finished(SSL *s)
SSLerr(SSL_F_GET_CLIENT_FINISHED,SSL_R_READ_WRONG_PACKET_TYPE);
}
else
+ {
SSLerr(SSL_F_GET_CLIENT_FINISHED,SSL_R_PEER_ERROR);
+ /* try to read the error message */
+ i=ssl2_read(s,(char *)&(p[s->init_num]),3-s->init_num);
+ return ssl2_part_read(s,SSL_F_GET_SERVER_VERIFY,i);
+ }
return(-1);
}
s->state=SSL2_ST_GET_CLIENT_FINISHED_B;