summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_pkt.c
diff options
context:
space:
mode:
authordjm <>2009-01-09 12:14:11 +0000
committerdjm <>2009-01-09 12:14:11 +0000
commita0fdc9ec41594852f67ec77dfad9cb06bacc4186 (patch)
treec43f6b3a4d93ad2cb3dcf93275295679d895a033 /src/lib/libssl/s3_pkt.c
parent5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80 (diff)
downloadopenbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.tar.gz
openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.tar.bz2
openbsd-a0fdc9ec41594852f67ec77dfad9cb06bacc4186.zip
import openssl-0.9.8j
Diffstat (limited to 'src/lib/libssl/s3_pkt.c')
-rw-r--r--src/lib/libssl/s3_pkt.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/libssl/s3_pkt.c b/src/lib/libssl/s3_pkt.c
index 44c7c143fe..9476dcddf6 100644
--- a/src/lib/libssl/s3_pkt.c
+++ b/src/lib/libssl/s3_pkt.c
@@ -753,8 +753,15 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
753 s->rwstate=SSL_NOTHING; 753 s->rwstate=SSL_NOTHING;
754 return(s->s3->wpend_ret); 754 return(s->s3->wpend_ret);
755 } 755 }
756 else if (i <= 0) 756 else if (i <= 0) {
757 if (s->version == DTLS1_VERSION ||
758 s->version == DTLS1_BAD_VER) {
759 /* For DTLS, just drop it. That's kind of the whole
760 point in using a datagram service */
761 s->s3->wbuf.left = 0;
762 }
757 return(i); 763 return(i);
764 }
758 s->s3->wbuf.offset+=i; 765 s->s3->wbuf.offset+=i;
759 s->s3->wbuf.left-=i; 766 s->s3->wbuf.left-=i;
760 } 767 }
@@ -1225,6 +1232,13 @@ int ssl3_do_change_cipher_spec(SSL *s)
1225 1232
1226 if (s->s3->tmp.key_block == NULL) 1233 if (s->s3->tmp.key_block == NULL)
1227 { 1234 {
1235 if (s->session == NULL)
1236 {
1237 /* might happen if dtls1_read_bytes() calls this */
1238 SSLerr(SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC,SSL_R_CCS_RECEIVED_EARLY);
1239 return (0);
1240 }
1241
1228 s->session->cipher=s->s3->tmp.new_cipher; 1242 s->session->cipher=s->s3->tmp.new_cipher;
1229 if (!s->method->ssl3_enc->setup_key_block(s)) return(0); 1243 if (!s->method->ssl3_enc->setup_key_block(s)) return(0);
1230 } 1244 }