diff options
author | djm <> | 2009-01-09 12:14:11 +0000 |
---|---|---|
committer | djm <> | 2009-01-09 12:14:11 +0000 |
commit | a0fdc9ec41594852f67ec77dfad9cb06bacc4186 (patch) | |
tree | c43f6b3a4d93ad2cb3dcf93275295679d895a033 /src/lib/libssl/s3_pkt.c | |
parent | 5a3c0a05c7f2c5d3c584b7c8d6aec836dd724c80 (diff) | |
download | openbsd-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.c | 16 |
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 | } |