diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/bio_ssl.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/d1_both.c | 18 | ||||
| -rw-r--r-- | src/lib/libssl/d1_clnt.c | 8 | ||||
| -rw-r--r-- | src/lib/libssl/d1_lib.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/d1_pkt.c | 42 | ||||
| -rw-r--r-- | src/lib/libssl/d1_srtp.c | 32 | ||||
| -rw-r--r-- | src/lib/libssl/d1_srvr.c | 12 | ||||
| -rw-r--r-- | src/lib/libssl/s3_lib.c | 48 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_asn1.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_both.c | 26 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_cert.c | 32 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_ciph.c | 12 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_clnt.c | 262 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_err.c | 269 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_lib.c | 98 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_locl.h | 7 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_packet.c | 18 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_pkt.c | 74 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_rsa.c | 104 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_sess.c | 30 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_srvr.c | 212 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_txt.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/t1_enc.c | 44 | ||||
| -rw-r--r-- | src/lib/libssl/t1_lib.c | 26 | ||||
| -rw-r--r-- | src/lib/libssl/t1_reneg.c | 24 | 
25 files changed, 841 insertions, 573 deletions
| diff --git a/src/lib/libssl/bio_ssl.c b/src/lib/libssl/bio_ssl.c index ababa8cf17..344ca21786 100644 --- a/src/lib/libssl/bio_ssl.c +++ b/src/lib/libssl/bio_ssl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bio_ssl.c,v 1.26 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: bio_ssl.c,v 1.27 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -110,7 +110,7 @@ ssl_new(BIO *bi) | |||
| 110 | 110 | ||
| 111 | bs = calloc(1, sizeof(BIO_SSL)); | 111 | bs = calloc(1, sizeof(BIO_SSL)); | 
| 112 | if (bs == NULL) { | 112 | if (bs == NULL) { | 
| 113 | SSLerror(ERR_R_MALLOC_FAILURE); | 113 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 114 | return (0); | 114 | return (0); | 
| 115 | } | 115 | } | 
| 116 | bi->init = 0; | 116 | bi->init = 0; | 
| diff --git a/src/lib/libssl/d1_both.c b/src/lib/libssl/d1_both.c index 0e4317653d..9aba4b85f8 100644 --- a/src/lib/libssl/d1_both.c +++ b/src/lib/libssl/d1_both.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_both.c,v 1.48 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: d1_both.c,v 1.49 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu | 
| 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 
| @@ -410,7 +410,7 @@ dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 410 | S3I(s)->tmp.reuse_message = 0; | 410 | S3I(s)->tmp.reuse_message = 0; | 
| 411 | if ((mt >= 0) && (S3I(s)->tmp.message_type != mt)) { | 411 | if ((mt >= 0) && (S3I(s)->tmp.message_type != mt)) { | 
| 412 | al = SSL_AD_UNEXPECTED_MESSAGE; | 412 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 413 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 413 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 414 | goto f_err; | 414 | goto f_err; | 
| 415 | } | 415 | } | 
| 416 | *ok = 1; | 416 | *ok = 1; | 
| @@ -475,12 +475,12 @@ dtls1_preprocess_fragment(SSL *s, struct hm_header_st *msg_hdr, int max) | |||
| 475 | 475 | ||
| 476 | /* sanity checking */ | 476 | /* sanity checking */ | 
| 477 | if ((frag_off + frag_len) > msg_len) { | 477 | if ((frag_off + frag_len) > msg_len) { | 
| 478 | SSLerror(SSL_R_EXCESSIVE_MESSAGE_SIZE); | 478 | SSLerror(s, SSL_R_EXCESSIVE_MESSAGE_SIZE); | 
| 479 | return SSL_AD_ILLEGAL_PARAMETER; | 479 | return SSL_AD_ILLEGAL_PARAMETER; | 
| 480 | } | 480 | } | 
| 481 | 481 | ||
| 482 | if ((frag_off + frag_len) > (unsigned long)max) { | 482 | if ((frag_off + frag_len) > (unsigned long)max) { | 
| 483 | SSLerror(SSL_R_EXCESSIVE_MESSAGE_SIZE); | 483 | SSLerror(s, SSL_R_EXCESSIVE_MESSAGE_SIZE); | 
| 484 | return SSL_AD_ILLEGAL_PARAMETER; | 484 | return SSL_AD_ILLEGAL_PARAMETER; | 
| 485 | } | 485 | } | 
| 486 | 486 | ||
| @@ -492,7 +492,7 @@ dtls1_preprocess_fragment(SSL *s, struct hm_header_st *msg_hdr, int max) | |||
| 492 | */ | 492 | */ | 
| 493 | if (!BUF_MEM_grow_clean(s->internal->init_buf, | 493 | if (!BUF_MEM_grow_clean(s->internal->init_buf, | 
| 494 | msg_len + DTLS1_HM_HEADER_LENGTH)) { | 494 | msg_len + DTLS1_HM_HEADER_LENGTH)) { | 
| 495 | SSLerror(ERR_R_BUF_LIB); | 495 | SSLerror(s, ERR_R_BUF_LIB); | 
| 496 | return SSL_AD_INTERNAL_ERROR; | 496 | return SSL_AD_INTERNAL_ERROR; | 
| 497 | } | 497 | } | 
| 498 | 498 | ||
| @@ -506,7 +506,7 @@ dtls1_preprocess_fragment(SSL *s, struct hm_header_st *msg_hdr, int max) | |||
| 506 | * They must be playing with us! BTW, failure to enforce | 506 | * They must be playing with us! BTW, failure to enforce | 
| 507 | * upper limit would open possibility for buffer overrun. | 507 | * upper limit would open possibility for buffer overrun. | 
| 508 | */ | 508 | */ | 
| 509 | SSLerror(SSL_R_EXCESSIVE_MESSAGE_SIZE); | 509 | SSLerror(s, SSL_R_EXCESSIVE_MESSAGE_SIZE); | 
| 510 | return SSL_AD_ILLEGAL_PARAMETER; | 510 | return SSL_AD_ILLEGAL_PARAMETER; | 
| 511 | } | 511 | } | 
| 512 | 512 | ||
| @@ -799,7 +799,7 @@ again: | |||
| 799 | /* parse the message fragment header */ | 799 | /* parse the message fragment header */ | 
| 800 | dtls1_get_message_header(wire, &msg_hdr) == 0) { | 800 | dtls1_get_message_header(wire, &msg_hdr) == 0) { | 
| 801 | al = SSL_AD_UNEXPECTED_MESSAGE; | 801 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 802 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 802 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 803 | goto f_err; | 803 | goto f_err; | 
| 804 | } | 804 | } | 
| 805 | 805 | ||
| @@ -841,7 +841,7 @@ again: | |||
| 841 | else /* Incorrectly formated Hello request */ | 841 | else /* Incorrectly formated Hello request */ | 
| 842 | { | 842 | { | 
| 843 | al = SSL_AD_UNEXPECTED_MESSAGE; | 843 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 844 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 844 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 845 | goto f_err; | 845 | goto f_err; | 
| 846 | } | 846 | } | 
| 847 | } | 847 | } | 
| @@ -872,7 +872,7 @@ again: | |||
| 872 | */ | 872 | */ | 
| 873 | if (i != (int)frag_len) { | 873 | if (i != (int)frag_len) { | 
| 874 | al = SSL3_AD_ILLEGAL_PARAMETER; | 874 | al = SSL3_AD_ILLEGAL_PARAMETER; | 
| 875 | SSLerror(SSL3_AD_ILLEGAL_PARAMETER); | 875 | SSLerror(s, SSL3_AD_ILLEGAL_PARAMETER); | 
| 876 | goto f_err; | 876 | goto f_err; | 
| 877 | } | 877 | } | 
| 878 | 878 | ||
| diff --git a/src/lib/libssl/d1_clnt.c b/src/lib/libssl/d1_clnt.c index 6e124c7a85..8e4c2586a3 100644 --- a/src/lib/libssl/d1_clnt.c +++ b/src/lib/libssl/d1_clnt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_clnt.c,v 1.73 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: d1_clnt.c,v 1.74 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu | 
| 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 
| @@ -216,7 +216,7 @@ dtls1_connect(SSL *s) | |||
| 216 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 216 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 
| 217 | 217 | ||
| 218 | if ((s->version & 0xff00 ) != (DTLS1_VERSION & 0xff00)) { | 218 | if ((s->version & 0xff00 ) != (DTLS1_VERSION & 0xff00)) { | 
| 219 | SSLerror(ERR_R_INTERNAL_ERROR); | 219 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 220 | ret = -1; | 220 | ret = -1; | 
| 221 | goto end; | 221 | goto end; | 
| 222 | } | 222 | } | 
| @@ -570,7 +570,7 @@ dtls1_connect(SSL *s) | |||
| 570 | /* break; */ | 570 | /* break; */ | 
| 571 | 571 | ||
| 572 | default: | 572 | default: | 
| 573 | SSLerror(SSL_R_UNKNOWN_STATE); | 573 | SSLerror(s, SSL_R_UNKNOWN_STATE); | 
| 574 | ret = -1; | 574 | ret = -1; | 
| 575 | goto end; | 575 | goto end; | 
| 576 | /* break; */ | 576 | /* break; */ | 
| @@ -631,7 +631,7 @@ dtls1_get_hello_verify(SSL *s) | |||
| 631 | goto truncated; | 631 | goto truncated; | 
| 632 | 632 | ||
| 633 | if (ssl_version != s->version) { | 633 | if (ssl_version != s->version) { | 
| 634 | SSLerror(SSL_R_WRONG_SSL_VERSION); | 634 | SSLerror(s, SSL_R_WRONG_SSL_VERSION); | 
| 635 | s->version = (s->version & 0xff00) | (ssl_version & 0xff); | 635 | s->version = (s->version & 0xff00) | (ssl_version & 0xff); | 
| 636 | al = SSL_AD_PROTOCOL_VERSION; | 636 | al = SSL_AD_PROTOCOL_VERSION; | 
| 637 | goto f_err; | 637 | goto f_err; | 
| diff --git a/src/lib/libssl/d1_lib.c b/src/lib/libssl/d1_lib.c index bd78494e66..8092d56a4c 100644 --- a/src/lib/libssl/d1_lib.c +++ b/src/lib/libssl/d1_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_lib.c,v 1.40 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: d1_lib.c,v 1.41 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu | 
| 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 
| @@ -406,7 +406,7 @@ dtls1_check_timeout_num(SSL *s) | |||
| 406 | 406 | ||
| 407 | if (D1I(s)->timeout.num_alerts > DTLS1_TMO_ALERT_COUNT) { | 407 | if (D1I(s)->timeout.num_alerts > DTLS1_TMO_ALERT_COUNT) { | 
| 408 | /* fail the connection, enough alerts have been sent */ | 408 | /* fail the connection, enough alerts have been sent */ | 
| 409 | SSLerror(SSL_R_READ_TIMEOUT_EXPIRED); | 409 | SSLerror(s, SSL_R_READ_TIMEOUT_EXPIRED); | 
| 410 | return -1; | 410 | return -1; | 
| 411 | } | 411 | } | 
| 412 | 412 | ||
| diff --git a/src/lib/libssl/d1_pkt.c b/src/lib/libssl/d1_pkt.c index 5e33a966de..5fdd176800 100644 --- a/src/lib/libssl/d1_pkt.c +++ b/src/lib/libssl/d1_pkt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_pkt.c,v 1.61 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: d1_pkt.c,v 1.62 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu | 
| 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 
| @@ -255,7 +255,7 @@ err: | |||
| 255 | free(rdata->rbuf.buf); | 255 | free(rdata->rbuf.buf); | 
| 256 | 256 | ||
| 257 | init_err: | 257 | init_err: | 
| 258 | SSLerror(ERR_R_INTERNAL_ERROR); | 258 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 259 | free(rdata); | 259 | free(rdata); | 
| 260 | pitem_free(item); | 260 | pitem_free(item); | 
| 261 | return (-1); | 261 | return (-1); | 
| @@ -354,7 +354,7 @@ dtls1_process_record(SSL *s) | |||
| 354 | /* check is not needed I believe */ | 354 | /* check is not needed I believe */ | 
| 355 | if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH) { | 355 | if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH) { | 
| 356 | al = SSL_AD_RECORD_OVERFLOW; | 356 | al = SSL_AD_RECORD_OVERFLOW; | 
| 357 | SSLerror(SSL_R_ENCRYPTED_LENGTH_TOO_LONG); | 357 | SSLerror(s, SSL_R_ENCRYPTED_LENGTH_TOO_LONG); | 
| 358 | goto f_err; | 358 | goto f_err; | 
| 359 | } | 359 | } | 
| 360 | 360 | ||
| @@ -396,7 +396,7 @@ dtls1_process_record(SSL *s) | |||
| 396 | (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE && | 396 | (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE && | 
| 397 | orig_len < mac_size + 1)) { | 397 | orig_len < mac_size + 1)) { | 
| 398 | al = SSL_AD_DECODE_ERROR; | 398 | al = SSL_AD_DECODE_ERROR; | 
| 399 | SSLerror(SSL_R_LENGTH_TOO_SHORT); | 399 | SSLerror(s, SSL_R_LENGTH_TOO_SHORT); | 
| 400 | goto f_err; | 400 | goto f_err; | 
| 401 | } | 401 | } | 
| 402 | 402 | ||
| @@ -433,7 +433,7 @@ dtls1_process_record(SSL *s) | |||
| 433 | 433 | ||
| 434 | if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH) { | 434 | if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH) { | 
| 435 | al = SSL_AD_RECORD_OVERFLOW; | 435 | al = SSL_AD_RECORD_OVERFLOW; | 
| 436 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 436 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 437 | goto f_err; | 437 | goto f_err; | 
| 438 | } | 438 | } | 
| 439 | 439 | ||
| @@ -650,7 +650,7 @@ dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
| 650 | if ((type && | 650 | if ((type && | 
| 651 | type != SSL3_RT_APPLICATION_DATA && type != SSL3_RT_HANDSHAKE) || | 651 | type != SSL3_RT_APPLICATION_DATA && type != SSL3_RT_HANDSHAKE) || | 
| 652 | (peek && (type != SSL3_RT_APPLICATION_DATA))) { | 652 | (peek && (type != SSL3_RT_APPLICATION_DATA))) { | 
| 653 | SSLerror(ERR_R_INTERNAL_ERROR); | 653 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 654 | return -1; | 654 | return -1; | 
| 655 | } | 655 | } | 
| 656 | 656 | ||
| @@ -667,7 +667,7 @@ dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
| 667 | if (i < 0) | 667 | if (i < 0) | 
| 668 | return (i); | 668 | return (i); | 
| 669 | if (i == 0) { | 669 | if (i == 0) { | 
| 670 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 670 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 671 | return (-1); | 671 | return (-1); | 
| 672 | } | 672 | } | 
| 673 | } | 673 | } | 
| @@ -731,7 +731,7 @@ start: | |||
| 731 | */ | 731 | */ | 
| 732 | if (dtls1_buffer_record(s, &(D1I(s)->buffered_app_data), | 732 | if (dtls1_buffer_record(s, &(D1I(s)->buffered_app_data), | 
| 733 | rr->seq_num) < 0) { | 733 | rr->seq_num) < 0) { | 
| 734 | SSLerror(ERR_R_INTERNAL_ERROR); | 734 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 735 | return (-1); | 735 | return (-1); | 
| 736 | } | 736 | } | 
| 737 | rr->length = 0; | 737 | rr->length = 0; | 
| @@ -754,7 +754,7 @@ start: | |||
| 754 | if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) && | 754 | if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) && | 
| 755 | (s->enc_read_ctx == NULL)) { | 755 | (s->enc_read_ctx == NULL)) { | 
| 756 | al = SSL_AD_UNEXPECTED_MESSAGE; | 756 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 757 | SSLerror(SSL_R_APP_DATA_IN_HANDSHAKE); | 757 | SSLerror(s, SSL_R_APP_DATA_IN_HANDSHAKE); | 
| 758 | goto f_err; | 758 | goto f_err; | 
| 759 | } | 759 | } | 
| 760 | 760 | ||
| @@ -817,7 +817,7 @@ start: | |||
| 817 | 817 | ||
| 818 | /* Not certain if this is the right error handling */ | 818 | /* Not certain if this is the right error handling */ | 
| 819 | al = SSL_AD_UNEXPECTED_MESSAGE; | 819 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 820 | SSLerror(SSL_R_UNEXPECTED_RECORD); | 820 | SSLerror(s, SSL_R_UNEXPECTED_RECORD); | 
| 821 | goto f_err; | 821 | goto f_err; | 
| 822 | } | 822 | } | 
| 823 | 823 | ||
| @@ -862,7 +862,7 @@ start: | |||
| 862 | (D1I(s)->handshake_fragment[2] != 0) || | 862 | (D1I(s)->handshake_fragment[2] != 0) || | 
| 863 | (D1I(s)->handshake_fragment[3] != 0)) { | 863 | (D1I(s)->handshake_fragment[3] != 0)) { | 
| 864 | al = SSL_AD_DECODE_ERROR; | 864 | al = SSL_AD_DECODE_ERROR; | 
| 865 | SSLerror(SSL_R_BAD_HELLO_REQUEST); | 865 | SSLerror(s, SSL_R_BAD_HELLO_REQUEST); | 
| 866 | goto err; | 866 | goto err; | 
| 867 | } | 867 | } | 
| 868 | 868 | ||
| @@ -883,7 +883,7 @@ start: | |||
| 883 | if (i < 0) | 883 | if (i < 0) | 
| 884 | return (i); | 884 | return (i); | 
| 885 | if (i == 0) { | 885 | if (i == 0) { | 
| 886 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 886 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 887 | return (-1); | 887 | return (-1); | 
| 888 | } | 888 | } | 
| 889 | 889 | ||
| @@ -940,7 +940,7 @@ start: | |||
| 940 | { | 940 | { | 
| 941 | s->internal->rwstate = SSL_NOTHING; | 941 | s->internal->rwstate = SSL_NOTHING; | 
| 942 | S3I(s)->fatal_alert = alert_descr; | 942 | S3I(s)->fatal_alert = alert_descr; | 
| 943 | SSLerror(SSL_AD_REASON_OFFSET + alert_descr); | 943 | SSLerror(s, SSL_AD_REASON_OFFSET + alert_descr); | 
| 944 | ERR_asprintf_error_data("SSL alert number %d", | 944 | ERR_asprintf_error_data("SSL alert number %d", | 
| 945 | alert_descr); | 945 | alert_descr); | 
| 946 | s->internal->shutdown|=SSL_RECEIVED_SHUTDOWN; | 946 | s->internal->shutdown|=SSL_RECEIVED_SHUTDOWN; | 
| @@ -948,7 +948,7 @@ start: | |||
| 948 | return (0); | 948 | return (0); | 
| 949 | } else { | 949 | } else { | 
| 950 | al = SSL_AD_ILLEGAL_PARAMETER; | 950 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 951 | SSLerror(SSL_R_UNKNOWN_ALERT_TYPE); | 951 | SSLerror(s, SSL_R_UNKNOWN_ALERT_TYPE); | 
| 952 | goto f_err; | 952 | goto f_err; | 
| 953 | } | 953 | } | 
| 954 | 954 | ||
| @@ -974,7 +974,7 @@ start: | |||
| 974 | if ((rr->length != ccs_hdr_len) || | 974 | if ((rr->length != ccs_hdr_len) || | 
| 975 | (rr->off != 0) || (rr->data[0] != SSL3_MT_CCS)) { | 975 | (rr->off != 0) || (rr->data[0] != SSL3_MT_CCS)) { | 
| 976 | i = SSL_AD_ILLEGAL_PARAMETER; | 976 | i = SSL_AD_ILLEGAL_PARAMETER; | 
| 977 | SSLerror(SSL_R_BAD_CHANGE_CIPHER_SPEC); | 977 | SSLerror(s, SSL_R_BAD_CHANGE_CIPHER_SPEC); | 
| 978 | goto err; | 978 | goto err; | 
| 979 | } | 979 | } | 
| 980 | 980 | ||
| @@ -1038,7 +1038,7 @@ start: | |||
| 1038 | if (i < 0) | 1038 | if (i < 0) | 
| 1039 | return (i); | 1039 | return (i); | 
| 1040 | if (i == 0) { | 1040 | if (i == 0) { | 
| 1041 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 1041 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 1042 | return (-1); | 1042 | return (-1); | 
| 1043 | } | 1043 | } | 
| 1044 | 1044 | ||
| @@ -1068,7 +1068,7 @@ start: | |||
| 1068 | goto start; | 1068 | goto start; | 
| 1069 | } | 1069 | } | 
| 1070 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1070 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1071 | SSLerror(SSL_R_UNEXPECTED_RECORD); | 1071 | SSLerror(s, SSL_R_UNEXPECTED_RECORD); | 
| 1072 | goto f_err; | 1072 | goto f_err; | 
| 1073 | case SSL3_RT_CHANGE_CIPHER_SPEC: | 1073 | case SSL3_RT_CHANGE_CIPHER_SPEC: | 
| 1074 | case SSL3_RT_ALERT: | 1074 | case SSL3_RT_ALERT: | 
| @@ -1077,7 +1077,7 @@ start: | |||
| 1077 | * of SSL3_RT_HANDSHAKE when s->internal->in_handshake is set, but that | 1077 | * of SSL3_RT_HANDSHAKE when s->internal->in_handshake is set, but that | 
| 1078 | * should not happen when type != rr->type */ | 1078 | * should not happen when type != rr->type */ | 
| 1079 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1079 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1080 | SSLerror(ERR_R_INTERNAL_ERROR); | 1080 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1081 | goto f_err; | 1081 | goto f_err; | 
| 1082 | case SSL3_RT_APPLICATION_DATA: | 1082 | case SSL3_RT_APPLICATION_DATA: | 
| 1083 | /* At this point, we were expecting handshake data, | 1083 | /* At this point, we were expecting handshake data, | 
| @@ -1099,7 +1099,7 @@ start: | |||
| 1099 | return (-1); | 1099 | return (-1); | 
| 1100 | } else { | 1100 | } else { | 
| 1101 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1101 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1102 | SSLerror(SSL_R_UNEXPECTED_RECORD); | 1102 | SSLerror(s, SSL_R_UNEXPECTED_RECORD); | 
| 1103 | goto f_err; | 1103 | goto f_err; | 
| 1104 | } | 1104 | } | 
| 1105 | } | 1105 | } | 
| @@ -1122,13 +1122,13 @@ dtls1_write_app_data_bytes(SSL *s, int type, const void *buf_, int len) | |||
| 1122 | if (i < 0) | 1122 | if (i < 0) | 
| 1123 | return (i); | 1123 | return (i); | 
| 1124 | if (i == 0) { | 1124 | if (i == 0) { | 
| 1125 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 1125 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 1126 | return -1; | 1126 | return -1; | 
| 1127 | } | 1127 | } | 
| 1128 | } | 1128 | } | 
| 1129 | 1129 | ||
| 1130 | if (len > SSL3_RT_MAX_PLAIN_LENGTH) { | 1130 | if (len > SSL3_RT_MAX_PLAIN_LENGTH) { | 
| 1131 | SSLerror(SSL_R_DTLS_MESSAGE_TOO_BIG); | 1131 | SSLerror(s, SSL_R_DTLS_MESSAGE_TOO_BIG); | 
| 1132 | return -1; | 1132 | return -1; | 
| 1133 | } | 1133 | } | 
| 1134 | 1134 | ||
| diff --git a/src/lib/libssl/d1_srtp.c b/src/lib/libssl/d1_srtp.c index 82dc8bfdef..26c14543fc 100644 --- a/src/lib/libssl/d1_srtp.c +++ b/src/lib/libssl/d1_srtp.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_srtp.c,v 1.20 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: d1_srtp.c,v 1.21 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -187,7 +187,7 @@ ssl_ctx_make_profiles(const char *profiles_string, | |||
| 187 | SRTP_PROTECTION_PROFILE *p; | 187 | SRTP_PROTECTION_PROFILE *p; | 
| 188 | 188 | ||
| 189 | if (!(profiles = sk_SRTP_PROTECTION_PROFILE_new_null())) { | 189 | if (!(profiles = sk_SRTP_PROTECTION_PROFILE_new_null())) { | 
| 190 | SSLerror(SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES); | 190 | SSLerrorx(SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES); | 
| 191 | return 1; | 191 | return 1; | 
| 192 | } | 192 | } | 
| 193 | 193 | ||
| @@ -198,7 +198,7 @@ ssl_ctx_make_profiles(const char *profiles_string, | |||
| 198 | col ? col - ptr : (int)strlen(ptr))) { | 198 | col ? col - ptr : (int)strlen(ptr))) { | 
| 199 | sk_SRTP_PROTECTION_PROFILE_push(profiles, p); | 199 | sk_SRTP_PROTECTION_PROFILE_push(profiles, p); | 
| 200 | } else { | 200 | } else { | 
| 201 | SSLerror(SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE); | 201 | SSLerrorx(SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE); | 
| 202 | sk_SRTP_PROTECTION_PROFILE_free(profiles); | 202 | sk_SRTP_PROTECTION_PROFILE_free(profiles); | 
| 203 | return 1; | 203 | return 1; | 
| 204 | } | 204 | } | 
| @@ -262,12 +262,12 @@ ssl_add_clienthello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int maxlen) | |||
| 262 | 262 | ||
| 263 | if (p) { | 263 | if (p) { | 
| 264 | if (ct == 0) { | 264 | if (ct == 0) { | 
| 265 | SSLerror(SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST); | 265 | SSLerror(s, SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST); | 
| 266 | return 1; | 266 | return 1; | 
| 267 | } | 267 | } | 
| 268 | 268 | ||
| 269 | if ((2 + ct * 2 + 1) > maxlen) { | 269 | if ((2 + ct * 2 + 1) > maxlen) { | 
| 270 | SSLerror(SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG); | 270 | SSLerror(s, SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG); | 
| 271 | return 1; | 271 | return 1; | 
| 272 | } | 272 | } | 
| 273 | 273 | ||
| @@ -300,7 +300,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, const unsigned char *d, int len, | |||
| 300 | CBS cbs, ciphers, mki; | 300 | CBS cbs, ciphers, mki; | 
| 301 | 301 | ||
| 302 | if (len < 0) { | 302 | if (len < 0) { | 
| 303 | SSLerror(SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 303 | SSLerror(s, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 
| 304 | *al = SSL_AD_DECODE_ERROR; | 304 | *al = SSL_AD_DECODE_ERROR; | 
| 305 | goto done; | 305 | goto done; | 
| 306 | } | 306 | } | 
| @@ -309,7 +309,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, const unsigned char *d, int len, | |||
| 309 | /* Pull off the cipher suite list */ | 309 | /* Pull off the cipher suite list */ | 
| 310 | if (!CBS_get_u16_length_prefixed(&cbs, &ciphers) || | 310 | if (!CBS_get_u16_length_prefixed(&cbs, &ciphers) || | 
| 311 | CBS_len(&ciphers) % 2) { | 311 | CBS_len(&ciphers) % 2) { | 
| 312 | SSLerror(SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 312 | SSLerror(s, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 
| 313 | *al = SSL_AD_DECODE_ERROR; | 313 | *al = SSL_AD_DECODE_ERROR; | 
| 314 | goto done; | 314 | goto done; | 
| 315 | } | 315 | } | 
| @@ -318,7 +318,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, const unsigned char *d, int len, | |||
| 318 | 318 | ||
| 319 | while (CBS_len(&ciphers) > 0) { | 319 | while (CBS_len(&ciphers) > 0) { | 
| 320 | if (!CBS_get_u16(&ciphers, &id)) { | 320 | if (!CBS_get_u16(&ciphers, &id)) { | 
| 321 | SSLerror(SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 321 | SSLerror(s, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 
| 322 | *al = SSL_AD_DECODE_ERROR; | 322 | *al = SSL_AD_DECODE_ERROR; | 
| 323 | goto done; | 323 | goto done; | 
| 324 | } | 324 | } | 
| @@ -332,7 +332,7 @@ ssl_parse_clienthello_use_srtp_ext(SSL *s, const unsigned char *d, int len, | |||
| 332 | /* Extract the MKI value as a sanity check, but discard it for now. */ | 332 | /* Extract the MKI value as a sanity check, but discard it for now. */ | 
| 333 | if (!CBS_get_u8_length_prefixed(&cbs, &mki) || | 333 | if (!CBS_get_u8_length_prefixed(&cbs, &mki) || | 
| 334 | CBS_len(&cbs) != 0) { | 334 | CBS_len(&cbs) != 0) { | 
| 335 | SSLerror(SSL_R_BAD_SRTP_MKI_VALUE); | 335 | SSLerror(s, SSL_R_BAD_SRTP_MKI_VALUE); | 
| 336 | *al = SSL_AD_DECODE_ERROR; | 336 | *al = SSL_AD_DECODE_ERROR; | 
| 337 | goto done; | 337 | goto done; | 
| 338 | } | 338 | } | 
| @@ -373,12 +373,12 @@ ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int maxlen) | |||
| 373 | { | 373 | { | 
| 374 | if (p) { | 374 | if (p) { | 
| 375 | if (maxlen < 5) { | 375 | if (maxlen < 5) { | 
| 376 | SSLerror(SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG); | 376 | SSLerror(s, SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG); | 
| 377 | return 1; | 377 | return 1; | 
| 378 | } | 378 | } | 
| 379 | 379 | ||
| 380 | if (s->internal->srtp_profile == 0) { | 380 | if (s->internal->srtp_profile == 0) { | 
| 381 | SSLerror(SSL_R_USE_SRTP_NOT_NEGOTIATED); | 381 | SSLerror(s, SSL_R_USE_SRTP_NOT_NEGOTIATED); | 
| 382 | return 1; | 382 | return 1; | 
| 383 | } | 383 | } | 
| 384 | s2n(2, p); | 384 | s2n(2, p); | 
| @@ -401,7 +401,7 @@ ssl_parse_serverhello_use_srtp_ext(SSL *s, const unsigned char *d, int len, int | |||
| 401 | CBS cbs, profile_ids, mki; | 401 | CBS cbs, profile_ids, mki; | 
| 402 | 402 | ||
| 403 | if (len < 0) { | 403 | if (len < 0) { | 
| 404 | SSLerror(SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 404 | SSLerror(s, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 
| 405 | *al = SSL_AD_DECODE_ERROR; | 405 | *al = SSL_AD_DECODE_ERROR; | 
| 406 | return 1; | 406 | return 1; | 
| 407 | } | 407 | } | 
| @@ -414,14 +414,14 @@ ssl_parse_serverhello_use_srtp_ext(SSL *s, const unsigned char *d, int len, int | |||
| 414 | */ | 414 | */ | 
| 415 | if (!CBS_get_u16_length_prefixed(&cbs, &profile_ids) || | 415 | if (!CBS_get_u16_length_prefixed(&cbs, &profile_ids) || | 
| 416 | !CBS_get_u16(&profile_ids, &id) || CBS_len(&profile_ids) != 0) { | 416 | !CBS_get_u16(&profile_ids, &id) || CBS_len(&profile_ids) != 0) { | 
| 417 | SSLerror(SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 417 | SSLerror(s, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 
| 418 | *al = SSL_AD_DECODE_ERROR; | 418 | *al = SSL_AD_DECODE_ERROR; | 
| 419 | return 1; | 419 | return 1; | 
| 420 | } | 420 | } | 
| 421 | 421 | ||
| 422 | /* Must be no MKI, since we never offer one. */ | 422 | /* Must be no MKI, since we never offer one. */ | 
| 423 | if (!CBS_get_u8_length_prefixed(&cbs, &mki) || CBS_len(&mki) != 0) { | 423 | if (!CBS_get_u8_length_prefixed(&cbs, &mki) || CBS_len(&mki) != 0) { | 
| 424 | SSLerror(SSL_R_BAD_SRTP_MKI_VALUE); | 424 | SSLerror(s, SSL_R_BAD_SRTP_MKI_VALUE); | 
| 425 | *al = SSL_AD_ILLEGAL_PARAMETER; | 425 | *al = SSL_AD_ILLEGAL_PARAMETER; | 
| 426 | return 1; | 426 | return 1; | 
| 427 | } | 427 | } | 
| @@ -430,7 +430,7 @@ ssl_parse_serverhello_use_srtp_ext(SSL *s, const unsigned char *d, int len, int | |||
| 430 | 430 | ||
| 431 | /* Throw an error if the server gave us an unsolicited extension. */ | 431 | /* Throw an error if the server gave us an unsolicited extension. */ | 
| 432 | if (clnt == NULL) { | 432 | if (clnt == NULL) { | 
| 433 | SSLerror(SSL_R_NO_SRTP_PROFILES); | 433 | SSLerror(s, SSL_R_NO_SRTP_PROFILES); | 
| 434 | *al = SSL_AD_DECODE_ERROR; | 434 | *al = SSL_AD_DECODE_ERROR; | 
| 435 | return 1; | 435 | return 1; | 
| 436 | } | 436 | } | 
| @@ -449,7 +449,7 @@ ssl_parse_serverhello_use_srtp_ext(SSL *s, const unsigned char *d, int len, int | |||
| 449 | } | 449 | } | 
| 450 | } | 450 | } | 
| 451 | 451 | ||
| 452 | SSLerror(SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 452 | SSLerror(s, SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST); | 
| 453 | *al = SSL_AD_DECODE_ERROR; | 453 | *al = SSL_AD_DECODE_ERROR; | 
| 454 | return 1; | 454 | return 1; | 
| 455 | } | 455 | } | 
| diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c index fa860b8d5a..860a5fc4e3 100644 --- a/src/lib/libssl/d1_srvr.c +++ b/src/lib/libssl/d1_srvr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: d1_srvr.c,v 1.83 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: d1_srvr.c,v 1.84 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu | 
| 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 
| @@ -202,7 +202,7 @@ dtls1_accept(SSL *s) | |||
| 202 | D1I(s)->listen = listen; | 202 | D1I(s)->listen = listen; | 
| 203 | 203 | ||
| 204 | if (s->cert == NULL) { | 204 | if (s->cert == NULL) { | 
| 205 | SSLerror(SSL_R_NO_CERTIFICATE_SET); | 205 | SSLerror(s, SSL_R_NO_CERTIFICATE_SET); | 
| 206 | ret = -1; | 206 | ret = -1; | 
| 207 | goto end; | 207 | goto end; | 
| 208 | } | 208 | } | 
| @@ -225,7 +225,7 @@ dtls1_accept(SSL *s) | |||
| 225 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 225 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 
| 226 | 226 | ||
| 227 | if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00)) { | 227 | if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00)) { | 
| 228 | SSLerror(ERR_R_INTERNAL_ERROR); | 228 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 229 | ret = -1; | 229 | ret = -1; | 
| 230 | goto end; | 230 | goto end; | 
| 231 | } | 231 | } | 
| @@ -506,7 +506,7 @@ dtls1_accept(SSL *s) | |||
| 506 | * at this point and digest cached records. | 506 | * at this point and digest cached records. | 
| 507 | */ | 507 | */ | 
| 508 | if (!S3I(s)->handshake_buffer) { | 508 | if (!S3I(s)->handshake_buffer) { | 
| 509 | SSLerror(ERR_R_INTERNAL_ERROR); | 509 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 510 | ret = -1; | 510 | ret = -1; | 
| 511 | goto end; | 511 | goto end; | 
| 512 | } | 512 | } | 
| @@ -658,7 +658,7 @@ dtls1_accept(SSL *s) | |||
| 658 | /* break; */ | 658 | /* break; */ | 
| 659 | 659 | ||
| 660 | default: | 660 | default: | 
| 661 | SSLerror(SSL_R_UNKNOWN_STATE); | 661 | SSLerror(s, SSL_R_UNKNOWN_STATE); | 
| 662 | ret = -1; | 662 | ret = -1; | 
| 663 | goto end; | 663 | goto end; | 
| 664 | /* break; */ | 664 | /* break; */ | 
| @@ -705,7 +705,7 @@ dtls1_send_hello_verify_request(SSL *s) | |||
| 705 | if (s->ctx->internal->app_gen_cookie_cb == NULL || | 705 | if (s->ctx->internal->app_gen_cookie_cb == NULL || | 
| 706 | s->ctx->internal->app_gen_cookie_cb(s, | 706 | s->ctx->internal->app_gen_cookie_cb(s, | 
| 707 | D1I(s)->cookie, &(D1I(s)->cookie_len)) == 0) { | 707 | D1I(s)->cookie, &(D1I(s)->cookie_len)) == 0) { | 
| 708 | SSLerror(ERR_R_INTERNAL_ERROR); | 708 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 709 | return 0; | 709 | return 0; | 
| 710 | } | 710 | } | 
| 711 | 711 | ||
| diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index fbc2d511d3..d18a2388c3 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: s3_lib.c,v 1.134 2017/02/05 15:06:05 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.135 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -1980,7 +1980,7 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 1980 | 1980 | ||
| 1981 | if (cmd == SSL_CTRL_SET_TMP_DH || cmd == SSL_CTRL_SET_TMP_DH_CB) { | 1981 | if (cmd == SSL_CTRL_SET_TMP_DH || cmd == SSL_CTRL_SET_TMP_DH_CB) { | 
| 1982 | if (!ssl_cert_inst(&s->cert)) { | 1982 | if (!ssl_cert_inst(&s->cert)) { | 
| 1983 | SSLerror(ERR_R_MALLOC_FAILURE); | 1983 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1984 | return (0); | 1984 | return (0); | 
| 1985 | } | 1985 | } | 
| 1986 | } | 1986 | } | 
| @@ -2009,17 +2009,17 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2009 | break; | 2009 | break; | 
| 2010 | case SSL_CTRL_SET_TMP_RSA: | 2010 | case SSL_CTRL_SET_TMP_RSA: | 
| 2011 | case SSL_CTRL_SET_TMP_RSA_CB: | 2011 | case SSL_CTRL_SET_TMP_RSA_CB: | 
| 2012 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2012 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2013 | break; | 2013 | break; | 
| 2014 | case SSL_CTRL_SET_TMP_DH: | 2014 | case SSL_CTRL_SET_TMP_DH: | 
| 2015 | { | 2015 | { | 
| 2016 | DH *dh = (DH *)parg; | 2016 | DH *dh = (DH *)parg; | 
| 2017 | if (dh == NULL) { | 2017 | if (dh == NULL) { | 
| 2018 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 2018 | SSLerror(s, ERR_R_PASSED_NULL_PARAMETER); | 
| 2019 | return (ret); | 2019 | return (ret); | 
| 2020 | } | 2020 | } | 
| 2021 | if ((dh = DHparams_dup(dh)) == NULL) { | 2021 | if ((dh = DHparams_dup(dh)) == NULL) { | 
| 2022 | SSLerror(ERR_R_DH_LIB); | 2022 | SSLerror(s, ERR_R_DH_LIB); | 
| 2023 | return (ret); | 2023 | return (ret); | 
| 2024 | } | 2024 | } | 
| 2025 | DH_free(s->cert->dh_tmp); | 2025 | DH_free(s->cert->dh_tmp); | 
| @@ -2029,7 +2029,7 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2029 | break; | 2029 | break; | 
| 2030 | 2030 | ||
| 2031 | case SSL_CTRL_SET_TMP_DH_CB: | 2031 | case SSL_CTRL_SET_TMP_DH_CB: | 
| 2032 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2032 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2033 | return (ret); | 2033 | return (ret); | 
| 2034 | 2034 | ||
| 2035 | case SSL_CTRL_SET_DH_AUTO: | 2035 | case SSL_CTRL_SET_DH_AUTO: | 
| @@ -2041,18 +2041,18 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2041 | EC_KEY *ecdh = NULL; | 2041 | EC_KEY *ecdh = NULL; | 
| 2042 | 2042 | ||
| 2043 | if (parg == NULL) { | 2043 | if (parg == NULL) { | 
| 2044 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 2044 | SSLerror(s, ERR_R_PASSED_NULL_PARAMETER); | 
| 2045 | return (ret); | 2045 | return (ret); | 
| 2046 | } | 2046 | } | 
| 2047 | if (!EC_KEY_up_ref((EC_KEY *)parg)) { | 2047 | if (!EC_KEY_up_ref((EC_KEY *)parg)) { | 
| 2048 | SSLerror(ERR_R_ECDH_LIB); | 2048 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 2049 | return (ret); | 2049 | return (ret); | 
| 2050 | } | 2050 | } | 
| 2051 | ecdh = (EC_KEY *)parg; | 2051 | ecdh = (EC_KEY *)parg; | 
| 2052 | if (!(s->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 2052 | if (!(s->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 
| 2053 | if (!EC_KEY_generate_key(ecdh)) { | 2053 | if (!EC_KEY_generate_key(ecdh)) { | 
| 2054 | EC_KEY_free(ecdh); | 2054 | EC_KEY_free(ecdh); | 
| 2055 | SSLerror(ERR_R_ECDH_LIB); | 2055 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 2056 | return (ret); | 2056 | return (ret); | 
| 2057 | } | 2057 | } | 
| 2058 | } | 2058 | } | 
| @@ -2063,7 +2063,7 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2063 | break; | 2063 | break; | 
| 2064 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2064 | case SSL_CTRL_SET_TMP_ECDH_CB: | 
| 2065 | { | 2065 | { | 
| 2066 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2066 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2067 | return (ret); | 2067 | return (ret); | 
| 2068 | } | 2068 | } | 
| 2069 | break; | 2069 | break; | 
| @@ -2076,16 +2076,16 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
| 2076 | if (parg == NULL) | 2076 | if (parg == NULL) | 
| 2077 | break; | 2077 | break; | 
| 2078 | if (strlen((char *)parg) > TLSEXT_MAXLEN_host_name) { | 2078 | if (strlen((char *)parg) > TLSEXT_MAXLEN_host_name) { | 
| 2079 | SSLerror(SSL_R_SSL3_EXT_INVALID_SERVERNAME); | 2079 | SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME); | 
| 2080 | return 0; | 2080 | return 0; | 
| 2081 | } | 2081 | } | 
| 2082 | if ((s->tlsext_hostname = strdup((char *)parg)) | 2082 | if ((s->tlsext_hostname = strdup((char *)parg)) | 
| 2083 | == NULL) { | 2083 | == NULL) { | 
| 2084 | SSLerror(ERR_R_INTERNAL_ERROR); | 2084 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2085 | return 0; | 2085 | return 0; | 
| 2086 | } | 2086 | } | 
| 2087 | } else { | 2087 | } else { | 
| 2088 | SSLerror(SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE); | 2088 | SSLerror(s, SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE); | 
| 2089 | return 0; | 2089 | return 0; | 
| 2090 | } | 2090 | } | 
| 2091 | break; | 2091 | break; | 
| @@ -2173,14 +2173,14 @@ ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | |||
| 2173 | 2173 | ||
| 2174 | if (cmd == SSL_CTRL_SET_TMP_DH_CB) { | 2174 | if (cmd == SSL_CTRL_SET_TMP_DH_CB) { | 
| 2175 | if (!ssl_cert_inst(&s->cert)) { | 2175 | if (!ssl_cert_inst(&s->cert)) { | 
| 2176 | SSLerror(ERR_R_MALLOC_FAILURE); | 2176 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2177 | return (0); | 2177 | return (0); | 
| 2178 | } | 2178 | } | 
| 2179 | } | 2179 | } | 
| 2180 | 2180 | ||
| 2181 | switch (cmd) { | 2181 | switch (cmd) { | 
| 2182 | case SSL_CTRL_SET_TMP_RSA_CB: | 2182 | case SSL_CTRL_SET_TMP_RSA_CB: | 
| 2183 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2183 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2184 | break; | 2184 | break; | 
| 2185 | case SSL_CTRL_SET_TMP_DH_CB: | 2185 | case SSL_CTRL_SET_TMP_DH_CB: | 
| 2186 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2186 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 
| @@ -2210,7 +2210,7 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2210 | return (0); | 2210 | return (0); | 
| 2211 | case SSL_CTRL_SET_TMP_RSA: | 2211 | case SSL_CTRL_SET_TMP_RSA: | 
| 2212 | case SSL_CTRL_SET_TMP_RSA_CB: | 2212 | case SSL_CTRL_SET_TMP_RSA_CB: | 
| 2213 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2213 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2214 | return (0); | 2214 | return (0); | 
| 2215 | case SSL_CTRL_SET_TMP_DH: | 2215 | case SSL_CTRL_SET_TMP_DH: | 
| 2216 | { | 2216 | { | 
| @@ -2218,7 +2218,7 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2218 | 2218 | ||
| 2219 | dh = (DH *)parg; | 2219 | dh = (DH *)parg; | 
| 2220 | if ((new = DHparams_dup(dh)) == NULL) { | 2220 | if ((new = DHparams_dup(dh)) == NULL) { | 
| 2221 | SSLerror(ERR_R_DH_LIB); | 2221 | SSLerrorx(ERR_R_DH_LIB); | 
| 2222 | return 0; | 2222 | return 0; | 
| 2223 | } | 2223 | } | 
| 2224 | DH_free(cert->dh_tmp); | 2224 | DH_free(cert->dh_tmp); | 
| @@ -2228,7 +2228,7 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2228 | /*break; */ | 2228 | /*break; */ | 
| 2229 | 2229 | ||
| 2230 | case SSL_CTRL_SET_TMP_DH_CB: | 2230 | case SSL_CTRL_SET_TMP_DH_CB: | 
| 2231 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2231 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2232 | return (0); | 2232 | return (0); | 
| 2233 | 2233 | ||
| 2234 | case SSL_CTRL_SET_DH_AUTO: | 2234 | case SSL_CTRL_SET_DH_AUTO: | 
| @@ -2240,18 +2240,18 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2240 | EC_KEY *ecdh = NULL; | 2240 | EC_KEY *ecdh = NULL; | 
| 2241 | 2241 | ||
| 2242 | if (parg == NULL) { | 2242 | if (parg == NULL) { | 
| 2243 | SSLerror(ERR_R_ECDH_LIB); | 2243 | SSLerrorx(ERR_R_ECDH_LIB); | 
| 2244 | return 0; | 2244 | return 0; | 
| 2245 | } | 2245 | } | 
| 2246 | ecdh = EC_KEY_dup((EC_KEY *)parg); | 2246 | ecdh = EC_KEY_dup((EC_KEY *)parg); | 
| 2247 | if (ecdh == NULL) { | 2247 | if (ecdh == NULL) { | 
| 2248 | SSLerror(ERR_R_EC_LIB); | 2248 | SSLerrorx(ERR_R_EC_LIB); | 
| 2249 | return 0; | 2249 | return 0; | 
| 2250 | } | 2250 | } | 
| 2251 | if (!(ctx->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 2251 | if (!(ctx->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 
| 2252 | if (!EC_KEY_generate_key(ecdh)) { | 2252 | if (!EC_KEY_generate_key(ecdh)) { | 
| 2253 | EC_KEY_free(ecdh); | 2253 | EC_KEY_free(ecdh); | 
| 2254 | SSLerror(ERR_R_ECDH_LIB); | 2254 | SSLerrorx(ERR_R_ECDH_LIB); | 
| 2255 | return 0; | 2255 | return 0; | 
| 2256 | } | 2256 | } | 
| 2257 | } | 2257 | } | 
| @@ -2263,7 +2263,7 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2263 | /* break; */ | 2263 | /* break; */ | 
| 2264 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2264 | case SSL_CTRL_SET_TMP_ECDH_CB: | 
| 2265 | { | 2265 | { | 
| 2266 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2266 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2267 | return (0); | 2267 | return (0); | 
| 2268 | } | 2268 | } | 
| 2269 | break; | 2269 | break; | 
| @@ -2277,7 +2277,7 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
| 2277 | if (!keys) | 2277 | if (!keys) | 
| 2278 | return 48; | 2278 | return 48; | 
| 2279 | if (larg != 48) { | 2279 | if (larg != 48) { | 
| 2280 | SSLerror(SSL_R_INVALID_TICKET_KEYS_LENGTH); | 2280 | SSLerrorx(SSL_R_INVALID_TICKET_KEYS_LENGTH); | 
| 2281 | return 0; | 2281 | return 0; | 
| 2282 | } | 2282 | } | 
| 2283 | if (cmd == SSL_CTRL_SET_TLSEXT_TICKET_KEYS) { | 2283 | if (cmd == SSL_CTRL_SET_TLSEXT_TICKET_KEYS) { | 
| @@ -2356,7 +2356,7 @@ ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) | |||
| 2356 | 2356 | ||
| 2357 | switch (cmd) { | 2357 | switch (cmd) { | 
| 2358 | case SSL_CTRL_SET_TMP_RSA_CB: | 2358 | case SSL_CTRL_SET_TMP_RSA_CB: | 
| 2359 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2359 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2360 | return (0); | 2360 | return (0); | 
| 2361 | case SSL_CTRL_SET_TMP_DH_CB: | 2361 | case SSL_CTRL_SET_TMP_DH_CB: | 
| 2362 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2362 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 
| diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index bcd1ddf83c..4014bf6fe6 100644 --- a/src/lib/libssl/ssl_asn1.c +++ b/src/lib/libssl/ssl_asn1.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_asn1.c,v 1.48 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: ssl_asn1.c,v 1.49 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | 2 | ||
| 3 | /* | 3 | /* | 
| 4 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> | 
| @@ -232,7 +232,7 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) | |||
| 232 | 232 | ||
| 233 | if (s == NULL) { | 233 | if (s == NULL) { | 
| 234 | if ((s = SSL_SESSION_new()) == NULL) { | 234 | if ((s = SSL_SESSION_new()) == NULL) { | 
| 235 | SSLerror(ERR_R_MALLOC_FAILURE); | 235 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 236 | return (NULL); | 236 | return (NULL); | 
| 237 | } | 237 | } | 
| 238 | } | 238 | } | 
| diff --git a/src/lib/libssl/ssl_both.c b/src/lib/libssl/ssl_both.c index 2d79c24c86..14fd121d53 100644 --- a/src/lib/libssl/ssl_both.c +++ b/src/lib/libssl/ssl_both.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_both.c,v 1.5 2017/01/29 15:20:18 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_both.c,v 1.6 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -244,7 +244,7 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
| 244 | /* If this occurs, we have missed a message */ | 244 | /* If this occurs, we have missed a message */ | 
| 245 | if (!S3I(s)->change_cipher_spec) { | 245 | if (!S3I(s)->change_cipher_spec) { | 
| 246 | al = SSL_AD_UNEXPECTED_MESSAGE; | 246 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 247 | SSLerror(SSL_R_GOT_A_FIN_BEFORE_A_CCS); | 247 | SSLerror(s, SSL_R_GOT_A_FIN_BEFORE_A_CCS); | 
| 248 | goto f_err; | 248 | goto f_err; | 
| 249 | } | 249 | } | 
| 250 | S3I(s)->change_cipher_spec = 0; | 250 | S3I(s)->change_cipher_spec = 0; | 
| @@ -253,7 +253,7 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
| 253 | 253 | ||
| 254 | if (n < 0) { | 254 | if (n < 0) { | 
| 255 | al = SSL_AD_DECODE_ERROR; | 255 | al = SSL_AD_DECODE_ERROR; | 
| 256 | SSLerror(SSL_R_BAD_DIGEST_LENGTH); | 256 | SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); | 
| 257 | goto f_err; | 257 | goto f_err; | 
| 258 | } | 258 | } | 
| 259 | 259 | ||
| @@ -262,13 +262,13 @@ ssl3_get_finished(SSL *s, int a, int b) | |||
| 262 | if (S3I(s)->tmp.peer_finish_md_len != md_len || | 262 | if (S3I(s)->tmp.peer_finish_md_len != md_len || | 
| 263 | CBS_len(&cbs) != md_len) { | 263 | CBS_len(&cbs) != md_len) { | 
| 264 | al = SSL_AD_DECODE_ERROR; | 264 | al = SSL_AD_DECODE_ERROR; | 
| 265 | SSLerror(SSL_R_BAD_DIGEST_LENGTH); | 265 | SSLerror(s, SSL_R_BAD_DIGEST_LENGTH); | 
| 266 | goto f_err; | 266 | goto f_err; | 
| 267 | } | 267 | } | 
| 268 | 268 | ||
| 269 | if (!CBS_mem_equal(&cbs, S3I(s)->tmp.peer_finish_md, CBS_len(&cbs))) { | 269 | if (!CBS_mem_equal(&cbs, S3I(s)->tmp.peer_finish_md, CBS_len(&cbs))) { | 
| 270 | al = SSL_AD_DECRYPT_ERROR; | 270 | al = SSL_AD_DECRYPT_ERROR; | 
| 271 | SSLerror(SSL_R_DIGEST_CHECK_FAILED); | 271 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); | 
| 272 | goto f_err; | 272 | goto f_err; | 
| 273 | } | 273 | } | 
| 274 | 274 | ||
| @@ -365,7 +365,7 @@ ssl3_output_cert_chain(SSL *s, CBB *cbb, X509 *x) | |||
| 365 | 365 | ||
| 366 | if (!X509_STORE_CTX_init(&xs_ctx, s->ctx->cert_store, | 366 | if (!X509_STORE_CTX_init(&xs_ctx, s->ctx->cert_store, | 
| 367 | x, NULL)) { | 367 | x, NULL)) { | 
| 368 | SSLerror(ERR_R_X509_LIB); | 368 | SSLerror(s, ERR_R_X509_LIB); | 
| 369 | goto err; | 369 | goto err; | 
| 370 | } | 370 | } | 
| 371 | X509_verify_cert(&xs_ctx); | 371 | X509_verify_cert(&xs_ctx); | 
| @@ -419,7 +419,7 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 419 | S3I(s)->tmp.reuse_message = 0; | 419 | S3I(s)->tmp.reuse_message = 0; | 
| 420 | if ((mt >= 0) && (S3I(s)->tmp.message_type != mt)) { | 420 | if ((mt >= 0) && (S3I(s)->tmp.message_type != mt)) { | 
| 421 | al = SSL_AD_UNEXPECTED_MESSAGE; | 421 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 422 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 422 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 423 | goto f_err; | 423 | goto f_err; | 
| 424 | } | 424 | } | 
| 425 | *ok = 1; | 425 | *ok = 1; | 
| @@ -471,25 +471,25 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
| 471 | 471 | ||
| 472 | if ((mt >= 0) && (*p != mt)) { | 472 | if ((mt >= 0) && (*p != mt)) { | 
| 473 | al = SSL_AD_UNEXPECTED_MESSAGE; | 473 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 474 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 474 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 475 | goto f_err; | 475 | goto f_err; | 
| 476 | } | 476 | } | 
| 477 | 477 | ||
| 478 | CBS_init(&cbs, p, 4); | 478 | CBS_init(&cbs, p, 4); | 
| 479 | if (!CBS_get_u8(&cbs, &u8) || | 479 | if (!CBS_get_u8(&cbs, &u8) || | 
| 480 | !CBS_get_u24(&cbs, &l)) { | 480 | !CBS_get_u24(&cbs, &l)) { | 
| 481 | SSLerror(ERR_R_BUF_LIB); | 481 | SSLerror(s, ERR_R_BUF_LIB); | 
| 482 | goto err; | 482 | goto err; | 
| 483 | } | 483 | } | 
| 484 | S3I(s)->tmp.message_type = u8; | 484 | S3I(s)->tmp.message_type = u8; | 
| 485 | 485 | ||
| 486 | if (l > (unsigned long)max) { | 486 | if (l > (unsigned long)max) { | 
| 487 | al = SSL_AD_ILLEGAL_PARAMETER; | 487 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 488 | SSLerror(SSL_R_EXCESSIVE_MESSAGE_SIZE); | 488 | SSLerror(s, SSL_R_EXCESSIVE_MESSAGE_SIZE); | 
| 489 | goto f_err; | 489 | goto f_err; | 
| 490 | } | 490 | } | 
| 491 | if (l && !BUF_MEM_grow_clean(s->internal->init_buf, l + 4)) { | 491 | if (l && !BUF_MEM_grow_clean(s->internal->init_buf, l + 4)) { | 
| 492 | SSLerror(ERR_R_BUF_LIB); | 492 | SSLerror(s, ERR_R_BUF_LIB); | 
| 493 | goto err; | 493 | goto err; | 
| 494 | } | 494 | } | 
| 495 | S3I(s)->tmp.message_size = l; | 495 | S3I(s)->tmp.message_size = l; | 
| @@ -679,7 +679,7 @@ ssl3_setup_read_buffer(SSL *s) | |||
| 679 | return 1; | 679 | return 1; | 
| 680 | 680 | ||
| 681 | err: | 681 | err: | 
| 682 | SSLerror(ERR_R_MALLOC_FAILURE); | 682 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 683 | return 0; | 683 | return 0; | 
| 684 | } | 684 | } | 
| 685 | 685 | ||
| @@ -712,7 +712,7 @@ ssl3_setup_write_buffer(SSL *s) | |||
| 712 | return 1; | 712 | return 1; | 
| 713 | 713 | ||
| 714 | err: | 714 | err: | 
| 715 | SSLerror(ERR_R_MALLOC_FAILURE); | 715 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 716 | return 0; | 716 | return 0; | 
| 717 | } | 717 | } | 
| 718 | 718 | ||
| diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index 73683d4099..83a9f2e92d 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_cert.c,v 1.63 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: ssl_cert.c,v 1.64 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -178,7 +178,7 @@ ssl_cert_new(void) | |||
| 178 | 178 | ||
| 179 | ret = calloc(1, sizeof(CERT)); | 179 | ret = calloc(1, sizeof(CERT)); | 
| 180 | if (ret == NULL) { | 180 | if (ret == NULL) { | 
| 181 | SSLerror(ERR_R_MALLOC_FAILURE); | 181 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 182 | return (NULL); | 182 | return (NULL); | 
| 183 | } | 183 | } | 
| 184 | ret->key = &(ret->pkeys[SSL_PKEY_RSA_ENC]); | 184 | ret->key = &(ret->pkeys[SSL_PKEY_RSA_ENC]); | 
| @@ -195,7 +195,7 @@ ssl_cert_dup(CERT *cert) | |||
| 195 | 195 | ||
| 196 | ret = calloc(1, sizeof(CERT)); | 196 | ret = calloc(1, sizeof(CERT)); | 
| 197 | if (ret == NULL) { | 197 | if (ret == NULL) { | 
| 198 | SSLerror(ERR_R_MALLOC_FAILURE); | 198 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 199 | return (NULL); | 199 | return (NULL); | 
| 200 | } | 200 | } | 
| 201 | 201 | ||
| @@ -212,13 +212,13 @@ ssl_cert_dup(CERT *cert) | |||
| 212 | if (cert->dh_tmp != NULL) { | 212 | if (cert->dh_tmp != NULL) { | 
| 213 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); | 213 | ret->dh_tmp = DHparams_dup(cert->dh_tmp); | 
| 214 | if (ret->dh_tmp == NULL) { | 214 | if (ret->dh_tmp == NULL) { | 
| 215 | SSLerror(ERR_R_DH_LIB); | 215 | SSLerrorx(ERR_R_DH_LIB); | 
| 216 | goto err; | 216 | goto err; | 
| 217 | } | 217 | } | 
| 218 | if (cert->dh_tmp->priv_key) { | 218 | if (cert->dh_tmp->priv_key) { | 
| 219 | BIGNUM *b = BN_dup(cert->dh_tmp->priv_key); | 219 | BIGNUM *b = BN_dup(cert->dh_tmp->priv_key); | 
| 220 | if (!b) { | 220 | if (!b) { | 
| 221 | SSLerror(ERR_R_BN_LIB); | 221 | SSLerrorx(ERR_R_BN_LIB); | 
| 222 | goto err; | 222 | goto err; | 
| 223 | } | 223 | } | 
| 224 | ret->dh_tmp->priv_key = b; | 224 | ret->dh_tmp->priv_key = b; | 
| @@ -226,7 +226,7 @@ ssl_cert_dup(CERT *cert) | |||
| 226 | if (cert->dh_tmp->pub_key) { | 226 | if (cert->dh_tmp->pub_key) { | 
| 227 | BIGNUM *b = BN_dup(cert->dh_tmp->pub_key); | 227 | BIGNUM *b = BN_dup(cert->dh_tmp->pub_key); | 
| 228 | if (!b) { | 228 | if (!b) { | 
| 229 | SSLerror(ERR_R_BN_LIB); | 229 | SSLerrorx(ERR_R_BN_LIB); | 
| 230 | goto err; | 230 | goto err; | 
| 231 | } | 231 | } | 
| 232 | ret->dh_tmp->pub_key = b; | 232 | ret->dh_tmp->pub_key = b; | 
| @@ -238,7 +238,7 @@ ssl_cert_dup(CERT *cert) | |||
| 238 | if (cert->ecdh_tmp) { | 238 | if (cert->ecdh_tmp) { | 
| 239 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); | 239 | ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); | 
| 240 | if (ret->ecdh_tmp == NULL) { | 240 | if (ret->ecdh_tmp == NULL) { | 
| 241 | SSLerror(ERR_R_EC_LIB); | 241 | SSLerrorx(ERR_R_EC_LIB); | 
| 242 | goto err; | 242 | goto err; | 
| 243 | } | 243 | } | 
| 244 | } | 244 | } | 
| @@ -284,7 +284,7 @@ ssl_cert_dup(CERT *cert) | |||
| 284 | 284 | ||
| 285 | default: | 285 | default: | 
| 286 | /* Can't happen. */ | 286 | /* Can't happen. */ | 
| 287 | SSLerror(SSL_R_LIBRARY_BUG); | 287 | SSLerrorx(SSL_R_LIBRARY_BUG); | 
| 288 | } | 288 | } | 
| 289 | } | 289 | } | 
| 290 | } | 290 | } | 
| @@ -354,12 +354,12 @@ ssl_cert_inst(CERT **o) | |||
| 354 | */ | 354 | */ | 
| 355 | 355 | ||
| 356 | if (o == NULL) { | 356 | if (o == NULL) { | 
| 357 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 357 | SSLerrorx(ERR_R_PASSED_NULL_PARAMETER); | 
| 358 | return (0); | 358 | return (0); | 
| 359 | } | 359 | } | 
| 360 | if (*o == NULL) { | 360 | if (*o == NULL) { | 
| 361 | if ((*o = ssl_cert_new()) == NULL) { | 361 | if ((*o = ssl_cert_new()) == NULL) { | 
| 362 | SSLerror(ERR_R_MALLOC_FAILURE); | 362 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 363 | return (0); | 363 | return (0); | 
| 364 | } | 364 | } | 
| 365 | } | 365 | } | 
| @@ -374,7 +374,7 @@ ssl_sess_cert_new(void) | |||
| 374 | 374 | ||
| 375 | ret = calloc(1, sizeof *ret); | 375 | ret = calloc(1, sizeof *ret); | 
| 376 | if (ret == NULL) { | 376 | if (ret == NULL) { | 
| 377 | SSLerror(ERR_R_MALLOC_FAILURE); | 377 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 378 | return NULL; | 378 | return NULL; | 
| 379 | } | 379 | } | 
| 380 | ret->peer_key = &(ret->peer_pkeys[SSL_PKEY_RSA_ENC]); | 380 | ret->peer_key = &(ret->peer_pkeys[SSL_PKEY_RSA_ENC]); | 
| @@ -418,7 +418,7 @@ ssl_verify_cert_chain(SSL *s, STACK_OF(X509) *sk) | |||
| 418 | 418 | ||
| 419 | x = sk_X509_value(sk, 0); | 419 | x = sk_X509_value(sk, 0); | 
| 420 | if (!X509_STORE_CTX_init(&ctx, s->ctx->cert_store, x, sk)) { | 420 | if (!X509_STORE_CTX_init(&ctx, s->ctx->cert_store, x, sk)) { | 
| 421 | SSLerror(ERR_R_X509_LIB); | 421 | SSLerror(s, ERR_R_X509_LIB); | 
| 422 | return (0); | 422 | return (0); | 
| 423 | } | 423 | } | 
| 424 | X509_STORE_CTX_set_ex_data(&ctx, | 424 | X509_STORE_CTX_set_ex_data(&ctx, | 
| @@ -574,7 +574,7 @@ SSL_load_client_CA_file(const char *file) | |||
| 574 | in = BIO_new(BIO_s_file_internal()); | 574 | in = BIO_new(BIO_s_file_internal()); | 
| 575 | 575 | ||
| 576 | if ((sk == NULL) || (in == NULL)) { | 576 | if ((sk == NULL) || (in == NULL)) { | 
| 577 | SSLerror(ERR_R_MALLOC_FAILURE); | 577 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 578 | goto err; | 578 | goto err; | 
| 579 | } | 579 | } | 
| 580 | 580 | ||
| @@ -587,7 +587,7 @@ SSL_load_client_CA_file(const char *file) | |||
| 587 | if (ret == NULL) { | 587 | if (ret == NULL) { | 
| 588 | ret = sk_X509_NAME_new_null(); | 588 | ret = sk_X509_NAME_new_null(); | 
| 589 | if (ret == NULL) { | 589 | if (ret == NULL) { | 
| 590 | SSLerror(ERR_R_MALLOC_FAILURE); | 590 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 591 | goto err; | 591 | goto err; | 
| 592 | } | 592 | } | 
| 593 | } | 593 | } | 
| @@ -642,7 +642,7 @@ SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, | |||
| 642 | in = BIO_new(BIO_s_file_internal()); | 642 | in = BIO_new(BIO_s_file_internal()); | 
| 643 | 643 | ||
| 644 | if (in == NULL) { | 644 | if (in == NULL) { | 
| 645 | SSLerror(ERR_R_MALLOC_FAILURE); | 645 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 646 | goto err; | 646 | goto err; | 
| 647 | } | 647 | } | 
| 648 | 648 | ||
| @@ -711,7 +711,7 @@ SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack, const char *dir) | |||
| 711 | if (!ret) { | 711 | if (!ret) { | 
| 712 | SYSerror(errno); | 712 | SYSerror(errno); | 
| 713 | ERR_asprintf_error_data("opendir ('%s')", dir); | 713 | ERR_asprintf_error_data("opendir ('%s')", dir); | 
| 714 | SSLerror(ERR_R_SYS_LIB); | 714 | SSLerrorx(ERR_R_SYS_LIB); | 
| 715 | } | 715 | } | 
| 716 | return ret; | 716 | return ret; | 
| 717 | } | 717 | } | 
| diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c index f167244eb4..9808c7c37f 100644 --- a/src/lib/libssl/ssl_ciph.c +++ b/src/lib/libssl/ssl_ciph.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_ciph.c,v 1.92 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: ssl_ciph.c,v 1.93 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -1072,7 +1072,7 @@ ssl_cipher_strength_sort(CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p) | |||
| 1072 | 1072 | ||
| 1073 | number_uses = calloc((max_strength_bits + 1), sizeof(int)); | 1073 | number_uses = calloc((max_strength_bits + 1), sizeof(int)); | 
| 1074 | if (!number_uses) { | 1074 | if (!number_uses) { | 
| 1075 | SSLerror(ERR_R_MALLOC_FAILURE); | 1075 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 1076 | return (0); | 1076 | return (0); | 
| 1077 | } | 1077 | } | 
| 1078 | 1078 | ||
| @@ -1162,7 +1162,7 @@ ssl_cipher_process_rulestr(const char *rule_str, CIPHER_ORDER **head_p, | |||
| 1162 | * it is no command or separator nor | 1162 | * it is no command or separator nor | 
| 1163 | * alphanumeric, so we call this an error. | 1163 | * alphanumeric, so we call this an error. | 
| 1164 | */ | 1164 | */ | 
| 1165 | SSLerror(SSL_R_INVALID_COMMAND); | 1165 | SSLerrorx(SSL_R_INVALID_COMMAND); | 
| 1166 | retval = found = 0; | 1166 | retval = found = 0; | 
| 1167 | l++; | 1167 | l++; | 
| 1168 | break; | 1168 | break; | 
| @@ -1308,7 +1308,7 @@ ssl_cipher_process_rulestr(const char *rule_str, CIPHER_ORDER **head_p, | |||
| 1308 | if ((buflen == 8) && !strncmp(buf, "STRENGTH", 8)) | 1308 | if ((buflen == 8) && !strncmp(buf, "STRENGTH", 8)) | 
| 1309 | ok = ssl_cipher_strength_sort(head_p, tail_p); | 1309 | ok = ssl_cipher_strength_sort(head_p, tail_p); | 
| 1310 | else | 1310 | else | 
| 1311 | SSLerror(SSL_R_INVALID_COMMAND); | 1311 | SSLerrorx(SSL_R_INVALID_COMMAND); | 
| 1312 | if (ok == 0) | 1312 | if (ok == 0) | 
| 1313 | retval = 0; | 1313 | retval = 0; | 
| 1314 | /* | 1314 | /* | 
| @@ -1377,7 +1377,7 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method, | |||
| 1377 | num_of_ciphers = ssl_method->num_ciphers(); | 1377 | num_of_ciphers = ssl_method->num_ciphers(); | 
| 1378 | co_list = reallocarray(NULL, num_of_ciphers, sizeof(CIPHER_ORDER)); | 1378 | co_list = reallocarray(NULL, num_of_ciphers, sizeof(CIPHER_ORDER)); | 
| 1379 | if (co_list == NULL) { | 1379 | if (co_list == NULL) { | 
| 1380 | SSLerror(ERR_R_MALLOC_FAILURE); | 1380 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 1381 | return(NULL); /* Failure */ | 1381 | return(NULL); /* Failure */ | 
| 1382 | } | 1382 | } | 
| 1383 | 1383 | ||
| @@ -1457,7 +1457,7 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method, | |||
| 1457 | ca_list = reallocarray(NULL, num_of_alias_max, sizeof(SSL_CIPHER *)); | 1457 | ca_list = reallocarray(NULL, num_of_alias_max, sizeof(SSL_CIPHER *)); | 
| 1458 | if (ca_list == NULL) { | 1458 | if (ca_list == NULL) { | 
| 1459 | free(co_list); | 1459 | free(co_list); | 
| 1460 | SSLerror(ERR_R_MALLOC_FAILURE); | 1460 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 1461 | return(NULL); /* Failure */ | 1461 | return(NULL); /* Failure */ | 
| 1462 | } | 1462 | } | 
| 1463 | ssl_cipher_collect_aliases(ca_list, num_of_group_aliases, | 1463 | ssl_cipher_collect_aliases(ca_list, num_of_group_aliases, | 
| diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index 6f2edf5d90..7f4d6582da 100644 --- a/src/lib/libssl/ssl_clnt.c +++ b/src/lib/libssl/ssl_clnt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_clnt.c,v 1.4 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.5 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -211,7 +211,7 @@ ssl3_connect(SSL *s) | |||
| 211 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 211 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 
| 212 | 212 | ||
| 213 | if ((s->version & 0xff00 ) != 0x0300) { | 213 | if ((s->version & 0xff00 ) != 0x0300) { | 
| 214 | SSLerror(ERR_R_INTERNAL_ERROR); | 214 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 215 | ret = -1; | 215 | ret = -1; | 
| 216 | goto end; | 216 | goto end; | 
| 217 | } | 217 | } | 
| @@ -550,7 +550,7 @@ ssl3_connect(SSL *s) | |||
| 550 | /* break; */ | 550 | /* break; */ | 
| 551 | 551 | ||
| 552 | default: | 552 | default: | 
| 553 | SSLerror(SSL_R_UNKNOWN_STATE); | 553 | SSLerror(s, SSL_R_UNKNOWN_STATE); | 
| 554 | ret = -1; | 554 | ret = -1; | 
| 555 | goto end; | 555 | goto end; | 
| 556 | /* break; */ | 556 | /* break; */ | 
| @@ -595,7 +595,7 @@ ssl3_client_hello(SSL *s) | |||
| 595 | SSL_SESSION *sess = s->session; | 595 | SSL_SESSION *sess = s->session; | 
| 596 | 596 | ||
| 597 | if (ssl_supported_version_range(s, NULL, &max_version) != 1) { | 597 | if (ssl_supported_version_range(s, NULL, &max_version) != 1) { | 
| 598 | SSLerror(SSL_R_NO_PROTOCOLS_AVAILABLE); | 598 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 
| 599 | return (-1); | 599 | return (-1); | 
| 600 | } | 600 | } | 
| 601 | s->client_version = s->version = max_version; | 601 | s->client_version = s->version = max_version; | 
| @@ -665,7 +665,7 @@ ssl3_client_hello(SSL *s) | |||
| 665 | *(p++) = i; | 665 | *(p++) = i; | 
| 666 | if (i != 0) { | 666 | if (i != 0) { | 
| 667 | if (i > (int)sizeof(s->session->session_id)) { | 667 | if (i > (int)sizeof(s->session->session_id)) { | 
| 668 | SSLerror(ERR_R_INTERNAL_ERROR); | 668 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 669 | goto err; | 669 | goto err; | 
| 670 | } | 670 | } | 
| 671 | memcpy(p, s->session->session_id, i); | 671 | memcpy(p, s->session->session_id, i); | 
| @@ -675,7 +675,7 @@ ssl3_client_hello(SSL *s) | |||
| 675 | /* DTLS Cookie. */ | 675 | /* DTLS Cookie. */ | 
| 676 | if (SSL_IS_DTLS(s)) { | 676 | if (SSL_IS_DTLS(s)) { | 
| 677 | if (D1I(s)->cookie_len > sizeof(D1I(s)->cookie)) { | 677 | if (D1I(s)->cookie_len > sizeof(D1I(s)->cookie)) { | 
| 678 | SSLerror(ERR_R_INTERNAL_ERROR); | 678 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 679 | goto err; | 679 | goto err; | 
| 680 | } | 680 | } | 
| 681 | *(p++) = D1I(s)->cookie_len; | 681 | *(p++) = D1I(s)->cookie_len; | 
| @@ -688,7 +688,7 @@ ssl3_client_hello(SSL *s) | |||
| 688 | bufend - &p[2], &outlen)) | 688 | bufend - &p[2], &outlen)) | 
| 689 | goto err; | 689 | goto err; | 
| 690 | if (outlen == 0) { | 690 | if (outlen == 0) { | 
| 691 | SSLerror(SSL_R_NO_CIPHERS_AVAILABLE); | 691 | SSLerror(s, SSL_R_NO_CIPHERS_AVAILABLE); | 
| 692 | goto err; | 692 | goto err; | 
| 693 | } | 693 | } | 
| 694 | s2n(outlen, p); | 694 | s2n(outlen, p); | 
| @@ -700,7 +700,7 @@ ssl3_client_hello(SSL *s) | |||
| 700 | 700 | ||
| 701 | /* TLS extensions*/ | 701 | /* TLS extensions*/ | 
| 702 | if ((p = ssl_add_clienthello_tlsext(s, p, bufend)) == NULL) { | 702 | if ((p = ssl_add_clienthello_tlsext(s, p, bufend)) == NULL) { | 
| 703 | SSLerror(ERR_R_INTERNAL_ERROR); | 703 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 704 | goto err; | 704 | goto err; | 
| 705 | } | 705 | } | 
| 706 | 706 | ||
| @@ -752,7 +752,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 752 | } else { | 752 | } else { | 
| 753 | /* Already sent a cookie. */ | 753 | /* Already sent a cookie. */ | 
| 754 | al = SSL_AD_UNEXPECTED_MESSAGE; | 754 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 755 | SSLerror(SSL_R_BAD_MESSAGE_TYPE); | 755 | SSLerror(s, SSL_R_BAD_MESSAGE_TYPE); | 
| 756 | goto f_err; | 756 | goto f_err; | 
| 757 | } | 757 | } | 
| 758 | } | 758 | } | 
| @@ -760,7 +760,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 760 | 760 | ||
| 761 | if (S3I(s)->tmp.message_type != SSL3_MT_SERVER_HELLO) { | 761 | if (S3I(s)->tmp.message_type != SSL3_MT_SERVER_HELLO) { | 
| 762 | al = SSL_AD_UNEXPECTED_MESSAGE; | 762 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 763 | SSLerror(SSL_R_BAD_MESSAGE_TYPE); | 763 | SSLerror(s, SSL_R_BAD_MESSAGE_TYPE); | 
| 764 | goto f_err; | 764 | goto f_err; | 
| 765 | } | 765 | } | 
| 766 | 766 | ||
| @@ -768,12 +768,12 @@ ssl3_get_server_hello(SSL *s) | |||
| 768 | goto truncated; | 768 | goto truncated; | 
| 769 | 769 | ||
| 770 | if (ssl_supported_version_range(s, &min_version, &max_version) != 1) { | 770 | if (ssl_supported_version_range(s, &min_version, &max_version) != 1) { | 
| 771 | SSLerror(SSL_R_NO_PROTOCOLS_AVAILABLE); | 771 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 
| 772 | goto err; | 772 | goto err; | 
| 773 | } | 773 | } | 
| 774 | 774 | ||
| 775 | if (server_version < min_version || server_version > max_version) { | 775 | if (server_version < min_version || server_version > max_version) { | 
| 776 | SSLerror(SSL_R_WRONG_SSL_VERSION); | 776 | SSLerror(s, SSL_R_WRONG_SSL_VERSION); | 
| 777 | s->version = (s->version & 0xff00) | (server_version & 0xff); | 777 | s->version = (s->version & 0xff00) | (server_version & 0xff); | 
| 778 | al = SSL_AD_PROTOCOL_VERSION; | 778 | al = SSL_AD_PROTOCOL_VERSION; | 
| 779 | goto f_err; | 779 | goto f_err; | 
| @@ -783,7 +783,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 783 | if ((method = tls1_get_client_method(server_version)) == NULL) | 783 | if ((method = tls1_get_client_method(server_version)) == NULL) | 
| 784 | method = dtls1_get_client_method(server_version); | 784 | method = dtls1_get_client_method(server_version); | 
| 785 | if (method == NULL) { | 785 | if (method == NULL) { | 
| 786 | SSLerror(ERR_R_INTERNAL_ERROR); | 786 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 787 | goto err; | 787 | goto err; | 
| 788 | } | 788 | } | 
| 789 | s->method = method; | 789 | s->method = method; | 
| @@ -802,7 +802,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 802 | if ((CBS_len(&session_id) > sizeof(s->session->session_id)) || | 802 | if ((CBS_len(&session_id) > sizeof(s->session->session_id)) || | 
| 803 | (CBS_len(&session_id) > SSL3_SESSION_ID_SIZE)) { | 803 | (CBS_len(&session_id) > SSL3_SESSION_ID_SIZE)) { | 
| 804 | al = SSL_AD_ILLEGAL_PARAMETER; | 804 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 805 | SSLerror(SSL_R_SSL3_SESSION_ID_TOO_LONG); | 805 | SSLerror(s, SSL_R_SSL3_SESSION_ID_TOO_LONG); | 
| 806 | goto f_err; | 806 | goto f_err; | 
| 807 | } | 807 | } | 
| 808 | 808 | ||
| @@ -834,7 +834,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 834 | s->sid_ctx, s->sid_ctx_length) != 0) { | 834 | s->sid_ctx, s->sid_ctx_length) != 0) { | 
| 835 | /* actually a client application bug */ | 835 | /* actually a client application bug */ | 
| 836 | al = SSL_AD_ILLEGAL_PARAMETER; | 836 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 837 | SSLerror(SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT); | 837 | SSLerror(s, SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT); | 
| 838 | goto f_err; | 838 | goto f_err; | 
| 839 | } | 839 | } | 
| 840 | s->s3->flags |= SSL3_FLAGS_CCS_OK; | 840 | s->s3->flags |= SSL3_FLAGS_CCS_OK; | 
| @@ -866,7 +866,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 866 | 866 | ||
| 867 | if ((cipher = ssl3_get_cipher_by_value(cipher_suite)) == NULL) { | 867 | if ((cipher = ssl3_get_cipher_by_value(cipher_suite)) == NULL) { | 
| 868 | al = SSL_AD_ILLEGAL_PARAMETER; | 868 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 869 | SSLerror(SSL_R_UNKNOWN_CIPHER_RETURNED); | 869 | SSLerror(s, SSL_R_UNKNOWN_CIPHER_RETURNED); | 
| 870 | goto f_err; | 870 | goto f_err; | 
| 871 | } | 871 | } | 
| 872 | 872 | ||
| @@ -874,7 +874,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 874 | if ((cipher->algorithm_ssl & SSL_TLSV1_2) && | 874 | if ((cipher->algorithm_ssl & SSL_TLSV1_2) && | 
| 875 | (TLS1_get_version(s) < TLS1_2_VERSION)) { | 875 | (TLS1_get_version(s) < TLS1_2_VERSION)) { | 
| 876 | al = SSL_AD_ILLEGAL_PARAMETER; | 876 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 877 | SSLerror(SSL_R_WRONG_CIPHER_RETURNED); | 877 | SSLerror(s, SSL_R_WRONG_CIPHER_RETURNED); | 
| 878 | goto f_err; | 878 | goto f_err; | 
| 879 | } | 879 | } | 
| 880 | 880 | ||
| @@ -883,7 +883,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 883 | if (i < 0) { | 883 | if (i < 0) { | 
| 884 | /* we did not say we would use this cipher */ | 884 | /* we did not say we would use this cipher */ | 
| 885 | al = SSL_AD_ILLEGAL_PARAMETER; | 885 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 886 | SSLerror(SSL_R_WRONG_CIPHER_RETURNED); | 886 | SSLerror(s, SSL_R_WRONG_CIPHER_RETURNED); | 
| 887 | goto f_err; | 887 | goto f_err; | 
| 888 | } | 888 | } | 
| 889 | 889 | ||
| @@ -896,7 +896,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 896 | s->session->cipher_id = s->session->cipher->id; | 896 | s->session->cipher_id = s->session->cipher->id; | 
| 897 | if (s->internal->hit && (s->session->cipher_id != cipher->id)) { | 897 | if (s->internal->hit && (s->session->cipher_id != cipher->id)) { | 
| 898 | al = SSL_AD_ILLEGAL_PARAMETER; | 898 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 899 | SSLerror(SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED); | 899 | SSLerror(s, SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED); | 
| 900 | goto f_err; | 900 | goto f_err; | 
| 901 | } | 901 | } | 
| 902 | S3I(s)->tmp.new_cipher = cipher; | 902 | S3I(s)->tmp.new_cipher = cipher; | 
| @@ -917,7 +917,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 917 | 917 | ||
| 918 | if (compression_method != 0) { | 918 | if (compression_method != 0) { | 
| 919 | al = SSL_AD_ILLEGAL_PARAMETER; | 919 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 920 | SSLerror(SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM); | 920 | SSLerror(s, SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM); | 
| 921 | goto f_err; | 921 | goto f_err; | 
| 922 | } | 922 | } | 
| 923 | 923 | ||
| @@ -925,11 +925,11 @@ ssl3_get_server_hello(SSL *s) | |||
| 925 | p = (unsigned char *)CBS_data(&cbs); | 925 | p = (unsigned char *)CBS_data(&cbs); | 
| 926 | if (!ssl_parse_serverhello_tlsext(s, &p, CBS_len(&cbs), &al)) { | 926 | if (!ssl_parse_serverhello_tlsext(s, &p, CBS_len(&cbs), &al)) { | 
| 927 | /* 'al' set by ssl_parse_serverhello_tlsext */ | 927 | /* 'al' set by ssl_parse_serverhello_tlsext */ | 
| 928 | SSLerror(SSL_R_PARSE_TLSEXT); | 928 | SSLerror(s, SSL_R_PARSE_TLSEXT); | 
| 929 | goto f_err; | 929 | goto f_err; | 
| 930 | } | 930 | } | 
| 931 | if (ssl_check_serverhello_tlsext(s) <= 0) { | 931 | if (ssl_check_serverhello_tlsext(s) <= 0) { | 
| 932 | SSLerror(SSL_R_SERVERHELLO_TLSEXT); | 932 | SSLerror(s, SSL_R_SERVERHELLO_TLSEXT); | 
| 933 | goto err; | 933 | goto err; | 
| 934 | } | 934 | } | 
| 935 | 935 | ||
| @@ -942,7 +942,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 942 | truncated: | 942 | truncated: | 
| 943 | /* wrong packet length */ | 943 | /* wrong packet length */ | 
| 944 | al = SSL_AD_DECODE_ERROR; | 944 | al = SSL_AD_DECODE_ERROR; | 
| 945 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 945 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 946 | f_err: | 946 | f_err: | 
| 947 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 947 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 948 | err: | 948 | err: | 
| @@ -974,13 +974,13 @@ ssl3_get_server_certificate(SSL *s) | |||
| 974 | 974 | ||
| 975 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE) { | 975 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE) { | 
| 976 | al = SSL_AD_UNEXPECTED_MESSAGE; | 976 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 977 | SSLerror(SSL_R_BAD_MESSAGE_TYPE); | 977 | SSLerror(s, SSL_R_BAD_MESSAGE_TYPE); | 
| 978 | goto f_err; | 978 | goto f_err; | 
| 979 | } | 979 | } | 
| 980 | 980 | ||
| 981 | 981 | ||
| 982 | if ((sk = sk_X509_new_null()) == NULL) { | 982 | if ((sk = sk_X509_new_null()) == NULL) { | 
| 983 | SSLerror(ERR_R_MALLOC_FAILURE); | 983 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 984 | goto err; | 984 | goto err; | 
| 985 | } | 985 | } | 
| 986 | 986 | ||
| @@ -994,7 +994,7 @@ ssl3_get_server_certificate(SSL *s) | |||
| 994 | if (!CBS_get_u24_length_prefixed(&cbs, &cert_list) || | 994 | if (!CBS_get_u24_length_prefixed(&cbs, &cert_list) || | 
| 995 | CBS_len(&cbs) != 0) { | 995 | CBS_len(&cbs) != 0) { | 
| 996 | al = SSL_AD_DECODE_ERROR; | 996 | al = SSL_AD_DECODE_ERROR; | 
| 997 | SSLerror(SSL_R_LENGTH_MISMATCH); | 997 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 998 | goto f_err; | 998 | goto f_err; | 
| 999 | } | 999 | } | 
| 1000 | 1000 | ||
| @@ -1005,7 +1005,7 @@ ssl3_get_server_certificate(SSL *s) | |||
| 1005 | goto truncated; | 1005 | goto truncated; | 
| 1006 | if (!CBS_get_u24_length_prefixed(&cert_list, &cert)) { | 1006 | if (!CBS_get_u24_length_prefixed(&cert_list, &cert)) { | 
| 1007 | al = SSL_AD_DECODE_ERROR; | 1007 | al = SSL_AD_DECODE_ERROR; | 
| 1008 | SSLerror(SSL_R_CERT_LENGTH_MISMATCH); | 1008 | SSLerror(s, SSL_R_CERT_LENGTH_MISMATCH); | 
| 1009 | goto f_err; | 1009 | goto f_err; | 
| 1010 | } | 1010 | } | 
| 1011 | 1011 | ||
| @@ -1013,16 +1013,16 @@ ssl3_get_server_certificate(SSL *s) | |||
| 1013 | x = d2i_X509(NULL, &q, CBS_len(&cert)); | 1013 | x = d2i_X509(NULL, &q, CBS_len(&cert)); | 
| 1014 | if (x == NULL) { | 1014 | if (x == NULL) { | 
| 1015 | al = SSL_AD_BAD_CERTIFICATE; | 1015 | al = SSL_AD_BAD_CERTIFICATE; | 
| 1016 | SSLerror(ERR_R_ASN1_LIB); | 1016 | SSLerror(s, ERR_R_ASN1_LIB); | 
| 1017 | goto f_err; | 1017 | goto f_err; | 
| 1018 | } | 1018 | } | 
| 1019 | if (q != CBS_data(&cert) + CBS_len(&cert)) { | 1019 | if (q != CBS_data(&cert) + CBS_len(&cert)) { | 
| 1020 | al = SSL_AD_DECODE_ERROR; | 1020 | al = SSL_AD_DECODE_ERROR; | 
| 1021 | SSLerror(SSL_R_CERT_LENGTH_MISMATCH); | 1021 | SSLerror(s, SSL_R_CERT_LENGTH_MISMATCH); | 
| 1022 | goto f_err; | 1022 | goto f_err; | 
| 1023 | } | 1023 | } | 
| 1024 | if (!sk_X509_push(sk, x)) { | 1024 | if (!sk_X509_push(sk, x)) { | 
| 1025 | SSLerror(ERR_R_MALLOC_FAILURE); | 1025 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1026 | goto err; | 1026 | goto err; | 
| 1027 | } | 1027 | } | 
| 1028 | x = NULL; | 1028 | x = NULL; | 
| @@ -1031,7 +1031,7 @@ ssl3_get_server_certificate(SSL *s) | |||
| 1031 | i = ssl_verify_cert_chain(s, sk); | 1031 | i = ssl_verify_cert_chain(s, sk); | 
| 1032 | if ((s->verify_mode != SSL_VERIFY_NONE) && (i <= 0)) { | 1032 | if ((s->verify_mode != SSL_VERIFY_NONE) && (i <= 0)) { | 
| 1033 | al = ssl_verify_alarm_type(s->verify_result); | 1033 | al = ssl_verify_alarm_type(s->verify_result); | 
| 1034 | SSLerror(SSL_R_CERTIFICATE_VERIFY_FAILED); | 1034 | SSLerror(s, SSL_R_CERTIFICATE_VERIFY_FAILED); | 
| 1035 | goto f_err; | 1035 | goto f_err; | 
| 1036 | 1036 | ||
| 1037 | } | 1037 | } | 
| @@ -1057,7 +1057,7 @@ ssl3_get_server_certificate(SSL *s) | |||
| 1057 | if (pkey == NULL || EVP_PKEY_missing_parameters(pkey)) { | 1057 | if (pkey == NULL || EVP_PKEY_missing_parameters(pkey)) { | 
| 1058 | x = NULL; | 1058 | x = NULL; | 
| 1059 | al = SSL3_AL_FATAL; | 1059 | al = SSL3_AL_FATAL; | 
| 1060 | SSLerror(SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS); | 1060 | SSLerror(s, SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS); | 
| 1061 | goto f_err; | 1061 | goto f_err; | 
| 1062 | } | 1062 | } | 
| 1063 | 1063 | ||
| @@ -1065,7 +1065,7 @@ ssl3_get_server_certificate(SSL *s) | |||
| 1065 | if (i < 0) { | 1065 | if (i < 0) { | 
| 1066 | x = NULL; | 1066 | x = NULL; | 
| 1067 | al = SSL3_AL_FATAL; | 1067 | al = SSL3_AL_FATAL; | 
| 1068 | SSLerror(SSL_R_UNKNOWN_CERTIFICATE_TYPE); | 1068 | SSLerror(s, SSL_R_UNKNOWN_CERTIFICATE_TYPE); | 
| 1069 | goto f_err; | 1069 | goto f_err; | 
| 1070 | } | 1070 | } | 
| 1071 | 1071 | ||
| @@ -1091,7 +1091,7 @@ ssl3_get_server_certificate(SSL *s) | |||
| 1091 | truncated: | 1091 | truncated: | 
| 1092 | /* wrong packet length */ | 1092 | /* wrong packet length */ | 
| 1093 | al = SSL_AD_DECODE_ERROR; | 1093 | al = SSL_AD_DECODE_ERROR; | 
| 1094 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1094 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1095 | f_err: | 1095 | f_err: | 
| 1096 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1096 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 1097 | } | 1097 | } | 
| @@ -1122,21 +1122,21 @@ ssl3_get_server_kex_dhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1122 | CBS_init(&cbs, *pp, *nn); | 1122 | CBS_init(&cbs, *pp, *nn); | 
| 1123 | 1123 | ||
| 1124 | if ((dh = DH_new()) == NULL) { | 1124 | if ((dh = DH_new()) == NULL) { | 
| 1125 | SSLerror(ERR_R_DH_LIB); | 1125 | SSLerror(s, ERR_R_DH_LIB); | 
| 1126 | goto err; | 1126 | goto err; | 
| 1127 | } | 1127 | } | 
| 1128 | 1128 | ||
| 1129 | if (!CBS_get_u16_length_prefixed(&cbs, &dhp)) | 1129 | if (!CBS_get_u16_length_prefixed(&cbs, &dhp)) | 
| 1130 | goto truncated; | 1130 | goto truncated; | 
| 1131 | if ((dh->p = BN_bin2bn(CBS_data(&dhp), CBS_len(&dhp), NULL)) == NULL) { | 1131 | if ((dh->p = BN_bin2bn(CBS_data(&dhp), CBS_len(&dhp), NULL)) == NULL) { | 
| 1132 | SSLerror(ERR_R_BN_LIB); | 1132 | SSLerror(s, ERR_R_BN_LIB); | 
| 1133 | goto err; | 1133 | goto err; | 
| 1134 | } | 1134 | } | 
| 1135 | 1135 | ||
| 1136 | if (!CBS_get_u16_length_prefixed(&cbs, &dhg)) | 1136 | if (!CBS_get_u16_length_prefixed(&cbs, &dhg)) | 
| 1137 | goto truncated; | 1137 | goto truncated; | 
| 1138 | if ((dh->g = BN_bin2bn(CBS_data(&dhg), CBS_len(&dhg), NULL)) == NULL) { | 1138 | if ((dh->g = BN_bin2bn(CBS_data(&dhg), CBS_len(&dhg), NULL)) == NULL) { | 
| 1139 | SSLerror(ERR_R_BN_LIB); | 1139 | SSLerror(s, ERR_R_BN_LIB); | 
| 1140 | goto err; | 1140 | goto err; | 
| 1141 | } | 1141 | } | 
| 1142 | 1142 | ||
| @@ -1144,7 +1144,7 @@ ssl3_get_server_kex_dhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1144 | goto truncated; | 1144 | goto truncated; | 
| 1145 | if ((dh->pub_key = BN_bin2bn(CBS_data(&dhpk), CBS_len(&dhpk), | 1145 | if ((dh->pub_key = BN_bin2bn(CBS_data(&dhpk), CBS_len(&dhpk), | 
| 1146 | NULL)) == NULL) { | 1146 | NULL)) == NULL) { | 
| 1147 | SSLerror(ERR_R_BN_LIB); | 1147 | SSLerror(s, ERR_R_BN_LIB); | 
| 1148 | goto err; | 1148 | goto err; | 
| 1149 | } | 1149 | } | 
| 1150 | 1150 | ||
| @@ -1153,7 +1153,7 @@ ssl3_get_server_kex_dhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1153 | * Discard keys weaker than 1024 bits. | 1153 | * Discard keys weaker than 1024 bits. | 
| 1154 | */ | 1154 | */ | 
| 1155 | if (DH_size(dh) < 1024 / 8) { | 1155 | if (DH_size(dh) < 1024 / 8) { | 
| 1156 | SSLerror(SSL_R_BAD_DH_P_LENGTH); | 1156 | SSLerror(s, SSL_R_BAD_DH_P_LENGTH); | 
| 1157 | goto err; | 1157 | goto err; | 
| 1158 | } | 1158 | } | 
| 1159 | 1159 | ||
| @@ -1174,7 +1174,7 @@ ssl3_get_server_kex_dhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1174 | 1174 | ||
| 1175 | truncated: | 1175 | truncated: | 
| 1176 | al = SSL_AD_DECODE_ERROR; | 1176 | al = SSL_AD_DECODE_ERROR; | 
| 1177 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1177 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1178 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1178 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 1179 | 1179 | ||
| 1180 | err: | 1180 | err: | 
| @@ -1199,16 +1199,16 @@ ssl3_get_server_kex_ecdhe_ecp(SSL *s, SESS_CERT *sc, int nid, CBS *public) | |||
| 1199 | */ | 1199 | */ | 
| 1200 | 1200 | ||
| 1201 | if ((ecdh = EC_KEY_new()) == NULL) { | 1201 | if ((ecdh = EC_KEY_new()) == NULL) { | 
| 1202 | SSLerror(ERR_R_MALLOC_FAILURE); | 1202 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1203 | goto err; | 1203 | goto err; | 
| 1204 | } | 1204 | } | 
| 1205 | 1205 | ||
| 1206 | if ((ngroup = EC_GROUP_new_by_curve_name(nid)) == NULL) { | 1206 | if ((ngroup = EC_GROUP_new_by_curve_name(nid)) == NULL) { | 
| 1207 | SSLerror(ERR_R_EC_LIB); | 1207 | SSLerror(s, ERR_R_EC_LIB); | 
| 1208 | goto err; | 1208 | goto err; | 
| 1209 | } | 1209 | } | 
| 1210 | if (EC_KEY_set_group(ecdh, ngroup) == 0) { | 1210 | if (EC_KEY_set_group(ecdh, ngroup) == 0) { | 
| 1211 | SSLerror(ERR_R_EC_LIB); | 1211 | SSLerror(s, ERR_R_EC_LIB); | 
| 1212 | goto err; | 1212 | goto err; | 
| 1213 | } | 1213 | } | 
| 1214 | 1214 | ||
| @@ -1216,13 +1216,13 @@ ssl3_get_server_kex_ecdhe_ecp(SSL *s, SESS_CERT *sc, int nid, CBS *public) | |||
| 1216 | 1216 | ||
| 1217 | if ((point = EC_POINT_new(group)) == NULL || | 1217 | if ((point = EC_POINT_new(group)) == NULL || | 
| 1218 | (bn_ctx = BN_CTX_new()) == NULL) { | 1218 | (bn_ctx = BN_CTX_new()) == NULL) { | 
| 1219 | SSLerror(ERR_R_MALLOC_FAILURE); | 1219 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1220 | goto err; | 1220 | goto err; | 
| 1221 | } | 1221 | } | 
| 1222 | 1222 | ||
| 1223 | if (EC_POINT_oct2point(group, point, CBS_data(public), | 1223 | if (EC_POINT_oct2point(group, point, CBS_data(public), | 
| 1224 | CBS_len(public), bn_ctx) == 0) { | 1224 | CBS_len(public), bn_ctx) == 0) { | 
| 1225 | SSLerror(SSL_R_BAD_ECPOINT); | 1225 | SSLerror(s, SSL_R_BAD_ECPOINT); | 
| 1226 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1226 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1227 | goto err; | 1227 | goto err; | 
| 1228 | } | 1228 | } | 
| @@ -1248,18 +1248,18 @@ ssl3_get_server_kex_ecdhe_ecx(SSL *s, SESS_CERT *sc, int nid, CBS *public) | |||
| 1248 | size_t outlen; | 1248 | size_t outlen; | 
| 1249 | 1249 | ||
| 1250 | if (nid != NID_X25519) { | 1250 | if (nid != NID_X25519) { | 
| 1251 | SSLerror(ERR_R_INTERNAL_ERROR); | 1251 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1252 | goto err; | 1252 | goto err; | 
| 1253 | } | 1253 | } | 
| 1254 | 1254 | ||
| 1255 | if (CBS_len(public) != X25519_KEY_LENGTH) { | 1255 | if (CBS_len(public) != X25519_KEY_LENGTH) { | 
| 1256 | SSLerror(SSL_R_BAD_ECPOINT); | 1256 | SSLerror(s, SSL_R_BAD_ECPOINT); | 
| 1257 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1257 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1258 | goto err; | 1258 | goto err; | 
| 1259 | } | 1259 | } | 
| 1260 | 1260 | ||
| 1261 | if (!CBS_stow(public, &sc->peer_x25519_tmp, &outlen)) { | 1261 | if (!CBS_stow(public, &sc->peer_x25519_tmp, &outlen)) { | 
| 1262 | SSLerror(ERR_R_MALLOC_FAILURE); | 1262 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1263 | goto err; | 1263 | goto err; | 
| 1264 | } | 1264 | } | 
| 1265 | 1265 | ||
| @@ -1293,7 +1293,7 @@ ssl3_get_server_kex_ecdhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1293 | curve_type != NAMED_CURVE_TYPE || | 1293 | curve_type != NAMED_CURVE_TYPE || | 
| 1294 | !CBS_get_u16(&cbs, &curve_id)) { | 1294 | !CBS_get_u16(&cbs, &curve_id)) { | 
| 1295 | al = SSL_AD_DECODE_ERROR; | 1295 | al = SSL_AD_DECODE_ERROR; | 
| 1296 | SSLerror(SSL_R_LENGTH_TOO_SHORT); | 1296 | SSLerror(s, SSL_R_LENGTH_TOO_SHORT); | 
| 1297 | goto f_err; | 1297 | goto f_err; | 
| 1298 | } | 1298 | } | 
| 1299 | 1299 | ||
| @@ -1303,13 +1303,13 @@ ssl3_get_server_kex_ecdhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1303 | */ | 1303 | */ | 
| 1304 | if (tls1_check_curve(s, curve_id) != 1) { | 1304 | if (tls1_check_curve(s, curve_id) != 1) { | 
| 1305 | al = SSL_AD_DECODE_ERROR; | 1305 | al = SSL_AD_DECODE_ERROR; | 
| 1306 | SSLerror(SSL_R_WRONG_CURVE); | 1306 | SSLerror(s, SSL_R_WRONG_CURVE); | 
| 1307 | goto f_err; | 1307 | goto f_err; | 
| 1308 | } | 1308 | } | 
| 1309 | 1309 | ||
| 1310 | if ((nid = tls1_ec_curve_id2nid(curve_id)) == 0) { | 1310 | if ((nid = tls1_ec_curve_id2nid(curve_id)) == 0) { | 
| 1311 | al = SSL_AD_INTERNAL_ERROR; | 1311 | al = SSL_AD_INTERNAL_ERROR; | 
| 1312 | SSLerror(SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS); | 1312 | SSLerror(s, SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS); | 
| 1313 | goto f_err; | 1313 | goto f_err; | 
| 1314 | } | 1314 | } | 
| 1315 | 1315 | ||
| @@ -1344,7 +1344,7 @@ ssl3_get_server_kex_ecdhe(SSL *s, EVP_PKEY **pkey, unsigned char **pp, long *nn) | |||
| 1344 | 1344 | ||
| 1345 | truncated: | 1345 | truncated: | 
| 1346 | al = SSL_AD_DECODE_ERROR; | 1346 | al = SSL_AD_DECODE_ERROR; | 
| 1347 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1347 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1348 | 1348 | ||
| 1349 | f_err: | 1349 | f_err: | 
| 1350 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1350 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| @@ -1385,7 +1385,7 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1385 | * ephemeral keys. | 1385 | * ephemeral keys. | 
| 1386 | */ | 1386 | */ | 
| 1387 | if (alg_k & (SSL_kDHE|SSL_kECDHE)) { | 1387 | if (alg_k & (SSL_kDHE|SSL_kECDHE)) { | 
| 1388 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 1388 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 1389 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1389 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1390 | goto f_err; | 1390 | goto f_err; | 
| 1391 | } | 1391 | } | 
| @@ -1421,7 +1421,7 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1421 | goto err; | 1421 | goto err; | 
| 1422 | } else if (alg_k != 0) { | 1422 | } else if (alg_k != 0) { | 
| 1423 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1423 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1424 | SSLerror(SSL_R_UNEXPECTED_MESSAGE); | 1424 | SSLerror(s, SSL_R_UNEXPECTED_MESSAGE); | 
| 1425 | goto f_err; | 1425 | goto f_err; | 
| 1426 | } | 1426 | } | 
| 1427 | 1427 | ||
| @@ -1433,7 +1433,7 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1433 | int sigalg = tls12_get_sigid(pkey); | 1433 | int sigalg = tls12_get_sigid(pkey); | 
| 1434 | /* Should never happen */ | 1434 | /* Should never happen */ | 
| 1435 | if (sigalg == -1) { | 1435 | if (sigalg == -1) { | 
| 1436 | SSLerror(ERR_R_INTERNAL_ERROR); | 1436 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1437 | goto err; | 1437 | goto err; | 
| 1438 | } | 1438 | } | 
| 1439 | /* | 1439 | /* | 
| @@ -1443,13 +1443,13 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1443 | if (2 > n) | 1443 | if (2 > n) | 
| 1444 | goto truncated; | 1444 | goto truncated; | 
| 1445 | if (sigalg != (int)p[1]) { | 1445 | if (sigalg != (int)p[1]) { | 
| 1446 | SSLerror(SSL_R_WRONG_SIGNATURE_TYPE); | 1446 | SSLerror(s, SSL_R_WRONG_SIGNATURE_TYPE); | 
| 1447 | al = SSL_AD_DECODE_ERROR; | 1447 | al = SSL_AD_DECODE_ERROR; | 
| 1448 | goto f_err; | 1448 | goto f_err; | 
| 1449 | } | 1449 | } | 
| 1450 | md = tls12_get_hash(p[0]); | 1450 | md = tls12_get_hash(p[0]); | 
| 1451 | if (md == NULL) { | 1451 | if (md == NULL) { | 
| 1452 | SSLerror(SSL_R_UNKNOWN_DIGEST); | 1452 | SSLerror(s, SSL_R_UNKNOWN_DIGEST); | 
| 1453 | al = SSL_AD_DECODE_ERROR; | 1453 | al = SSL_AD_DECODE_ERROR; | 
| 1454 | goto f_err; | 1454 | goto f_err; | 
| 1455 | } | 1455 | } | 
| @@ -1467,7 +1467,7 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1467 | if (i != n || n > j) { | 1467 | if (i != n || n > j) { | 
| 1468 | /* wrong packet length */ | 1468 | /* wrong packet length */ | 
| 1469 | al = SSL_AD_DECODE_ERROR; | 1469 | al = SSL_AD_DECODE_ERROR; | 
| 1470 | SSLerror(SSL_R_WRONG_SIGNATURE_LENGTH); | 1470 | SSLerror(s, SSL_R_WRONG_SIGNATURE_LENGTH); | 
| 1471 | goto f_err; | 1471 | goto f_err; | 
| 1472 | } | 1472 | } | 
| 1473 | 1473 | ||
| @@ -1499,13 +1499,13 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1499 | p, n, pkey->pkey.rsa); | 1499 | p, n, pkey->pkey.rsa); | 
| 1500 | if (i < 0) { | 1500 | if (i < 0) { | 
| 1501 | al = SSL_AD_DECRYPT_ERROR; | 1501 | al = SSL_AD_DECRYPT_ERROR; | 
| 1502 | SSLerror(SSL_R_BAD_RSA_DECRYPT); | 1502 | SSLerror(s, SSL_R_BAD_RSA_DECRYPT); | 
| 1503 | goto f_err; | 1503 | goto f_err; | 
| 1504 | } | 1504 | } | 
| 1505 | if (i == 0) { | 1505 | if (i == 0) { | 
| 1506 | /* bad signature */ | 1506 | /* bad signature */ | 
| 1507 | al = SSL_AD_DECRYPT_ERROR; | 1507 | al = SSL_AD_DECRYPT_ERROR; | 
| 1508 | SSLerror(SSL_R_BAD_SIGNATURE); | 1508 | SSLerror(s, SSL_R_BAD_SIGNATURE); | 
| 1509 | goto f_err; | 1509 | goto f_err; | 
| 1510 | } | 1510 | } | 
| 1511 | } else { | 1511 | } else { | 
| @@ -1518,20 +1518,20 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1518 | if (EVP_VerifyFinal(&md_ctx, p,(int)n, pkey) <= 0) { | 1518 | if (EVP_VerifyFinal(&md_ctx, p,(int)n, pkey) <= 0) { | 
| 1519 | /* bad signature */ | 1519 | /* bad signature */ | 
| 1520 | al = SSL_AD_DECRYPT_ERROR; | 1520 | al = SSL_AD_DECRYPT_ERROR; | 
| 1521 | SSLerror(SSL_R_BAD_SIGNATURE); | 1521 | SSLerror(s, SSL_R_BAD_SIGNATURE); | 
| 1522 | goto f_err; | 1522 | goto f_err; | 
| 1523 | } | 1523 | } | 
| 1524 | } | 1524 | } | 
| 1525 | } else { | 1525 | } else { | 
| 1526 | /* aNULL does not need public keys. */ | 1526 | /* aNULL does not need public keys. */ | 
| 1527 | if (!(alg_a & SSL_aNULL)) { | 1527 | if (!(alg_a & SSL_aNULL)) { | 
| 1528 | SSLerror(ERR_R_INTERNAL_ERROR); | 1528 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1529 | goto err; | 1529 | goto err; | 
| 1530 | } | 1530 | } | 
| 1531 | /* still data left over */ | 1531 | /* still data left over */ | 
| 1532 | if (n != 0) { | 1532 | if (n != 0) { | 
| 1533 | al = SSL_AD_DECODE_ERROR; | 1533 | al = SSL_AD_DECODE_ERROR; | 
| 1534 | SSLerror(SSL_R_EXTRA_DATA_IN_MESSAGE); | 1534 | SSLerror(s, SSL_R_EXTRA_DATA_IN_MESSAGE); | 
| 1535 | goto f_err; | 1535 | goto f_err; | 
| 1536 | } | 1536 | } | 
| 1537 | } | 1537 | } | 
| @@ -1544,7 +1544,7 @@ ssl3_get_server_key_exchange(SSL *s) | |||
| 1544 | truncated: | 1544 | truncated: | 
| 1545 | /* wrong packet length */ | 1545 | /* wrong packet length */ | 
| 1546 | al = SSL_AD_DECODE_ERROR; | 1546 | al = SSL_AD_DECODE_ERROR; | 
| 1547 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1547 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1548 | 1548 | ||
| 1549 | f_err: | 1549 | f_err: | 
| 1550 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1550 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| @@ -1591,14 +1591,14 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1591 | 1591 | ||
| 1592 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE_REQUEST) { | 1592 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE_REQUEST) { | 
| 1593 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE); | 1593 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE); | 
| 1594 | SSLerror(SSL_R_WRONG_MESSAGE_TYPE); | 1594 | SSLerror(s, SSL_R_WRONG_MESSAGE_TYPE); | 
| 1595 | goto err; | 1595 | goto err; | 
| 1596 | } | 1596 | } | 
| 1597 | 1597 | ||
| 1598 | /* TLS does not like anon-DH with client cert */ | 1598 | /* TLS does not like anon-DH with client cert */ | 
| 1599 | if (S3I(s)->tmp.new_cipher->algorithm_auth & SSL_aNULL) { | 1599 | if (S3I(s)->tmp.new_cipher->algorithm_auth & SSL_aNULL) { | 
| 1600 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE); | 1600 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE); | 
| 1601 | SSLerror(SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER); | 1601 | SSLerror(s, SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER); | 
| 1602 | goto err; | 1602 | goto err; | 
| 1603 | } | 1603 | } | 
| 1604 | 1604 | ||
| @@ -1607,7 +1607,7 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1607 | CBS_init(&cert_request, s->internal->init_msg, n); | 1607 | CBS_init(&cert_request, s->internal->init_msg, n); | 
| 1608 | 1608 | ||
| 1609 | if ((ca_sk = sk_X509_NAME_new(ca_dn_cmp)) == NULL) { | 1609 | if ((ca_sk = sk_X509_NAME_new(ca_dn_cmp)) == NULL) { | 
| 1610 | SSLerror(ERR_R_MALLOC_FAILURE); | 1610 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1611 | goto err; | 1611 | goto err; | 
| 1612 | } | 1612 | } | 
| 1613 | 1613 | ||
| @@ -1620,7 +1620,7 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1620 | if (!CBS_get_bytes(&cert_request, &ctypes, ctype_num) || | 1620 | if (!CBS_get_bytes(&cert_request, &ctypes, ctype_num) || | 
| 1621 | !CBS_write_bytes(&ctypes, (uint8_t *)S3I(s)->tmp.ctype, | 1621 | !CBS_write_bytes(&ctypes, (uint8_t *)S3I(s)->tmp.ctype, | 
| 1622 | sizeof(S3I(s)->tmp.ctype), NULL)) { | 1622 | sizeof(S3I(s)->tmp.ctype), NULL)) { | 
| 1623 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 1623 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 1624 | goto err; | 1624 | goto err; | 
| 1625 | } | 1625 | } | 
| 1626 | 1626 | ||
| @@ -1628,7 +1628,7 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1628 | CBS sigalgs; | 1628 | CBS sigalgs; | 
| 1629 | 1629 | ||
| 1630 | if (CBS_len(&cert_request) < 2) { | 1630 | if (CBS_len(&cert_request) < 2) { | 
| 1631 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 1631 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 1632 | goto err; | 1632 | goto err; | 
| 1633 | } | 1633 | } | 
| 1634 | 1634 | ||
| @@ -1637,28 +1637,28 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1637 | */ | 1637 | */ | 
| 1638 | if (!CBS_get_u16_length_prefixed(&cert_request, &sigalgs)) { | 1638 | if (!CBS_get_u16_length_prefixed(&cert_request, &sigalgs)) { | 
| 1639 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1639 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1640 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 1640 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 1641 | goto err; | 1641 | goto err; | 
| 1642 | } | 1642 | } | 
| 1643 | if ((CBS_len(&sigalgs) & 1) || | 1643 | if ((CBS_len(&sigalgs) & 1) || | 
| 1644 | !tls1_process_sigalgs(s, CBS_data(&sigalgs), | 1644 | !tls1_process_sigalgs(s, CBS_data(&sigalgs), | 
| 1645 | CBS_len(&sigalgs))) { | 1645 | CBS_len(&sigalgs))) { | 
| 1646 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1646 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1647 | SSLerror(SSL_R_SIGNATURE_ALGORITHMS_ERROR); | 1647 | SSLerror(s, SSL_R_SIGNATURE_ALGORITHMS_ERROR); | 
| 1648 | goto err; | 1648 | goto err; | 
| 1649 | } | 1649 | } | 
| 1650 | } | 1650 | } | 
| 1651 | 1651 | ||
| 1652 | /* get the CA RDNs */ | 1652 | /* get the CA RDNs */ | 
| 1653 | if (CBS_len(&cert_request) < 2) { | 1653 | if (CBS_len(&cert_request) < 2) { | 
| 1654 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 1654 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 1655 | goto err; | 1655 | goto err; | 
| 1656 | } | 1656 | } | 
| 1657 | 1657 | ||
| 1658 | if (!CBS_get_u16_length_prefixed(&cert_request, &rdn_list) || | 1658 | if (!CBS_get_u16_length_prefixed(&cert_request, &rdn_list) || | 
| 1659 | CBS_len(&cert_request) != 0) { | 1659 | CBS_len(&cert_request) != 0) { | 
| 1660 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1660 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1661 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1661 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1662 | goto err; | 1662 | goto err; | 
| 1663 | } | 1663 | } | 
| 1664 | 1664 | ||
| @@ -1666,13 +1666,13 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1666 | CBS rdn; | 1666 | CBS rdn; | 
| 1667 | 1667 | ||
| 1668 | if (CBS_len(&rdn_list) < 2) { | 1668 | if (CBS_len(&rdn_list) < 2) { | 
| 1669 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 1669 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 1670 | goto err; | 1670 | goto err; | 
| 1671 | } | 1671 | } | 
| 1672 | 1672 | ||
| 1673 | if (!CBS_get_u16_length_prefixed(&rdn_list, &rdn)) { | 1673 | if (!CBS_get_u16_length_prefixed(&rdn_list, &rdn)) { | 
| 1674 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1674 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1675 | SSLerror(SSL_R_CA_DN_TOO_LONG); | 1675 | SSLerror(s, SSL_R_CA_DN_TOO_LONG); | 
| 1676 | goto err; | 1676 | goto err; | 
| 1677 | } | 1677 | } | 
| 1678 | 1678 | ||
| @@ -1680,17 +1680,17 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1680 | if ((xn = d2i_X509_NAME(NULL, &q, CBS_len(&rdn))) == NULL) { | 1680 | if ((xn = d2i_X509_NAME(NULL, &q, CBS_len(&rdn))) == NULL) { | 
| 1681 | ssl3_send_alert(s, SSL3_AL_FATAL, | 1681 | ssl3_send_alert(s, SSL3_AL_FATAL, | 
| 1682 | SSL_AD_DECODE_ERROR); | 1682 | SSL_AD_DECODE_ERROR); | 
| 1683 | SSLerror(ERR_R_ASN1_LIB); | 1683 | SSLerror(s, ERR_R_ASN1_LIB); | 
| 1684 | goto err; | 1684 | goto err; | 
| 1685 | } | 1685 | } | 
| 1686 | 1686 | ||
| 1687 | if (q != CBS_data(&rdn) + CBS_len(&rdn)) { | 1687 | if (q != CBS_data(&rdn) + CBS_len(&rdn)) { | 
| 1688 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1688 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1689 | SSLerror(SSL_R_CA_DN_LENGTH_MISMATCH); | 1689 | SSLerror(s, SSL_R_CA_DN_LENGTH_MISMATCH); | 
| 1690 | goto err; | 1690 | goto err; | 
| 1691 | } | 1691 | } | 
| 1692 | if (!sk_X509_NAME_push(ca_sk, xn)) { | 1692 | if (!sk_X509_NAME_push(ca_sk, xn)) { | 
| 1693 | SSLerror(ERR_R_MALLOC_FAILURE); | 1693 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1694 | goto err; | 1694 | goto err; | 
| 1695 | } | 1695 | } | 
| 1696 | xn = NULL; /* avoid free in err block */ | 1696 | xn = NULL; /* avoid free in err block */ | 
| @@ -1706,7 +1706,7 @@ ssl3_get_certificate_request(SSL *s) | |||
| 1706 | ret = 1; | 1706 | ret = 1; | 
| 1707 | if (0) { | 1707 | if (0) { | 
| 1708 | truncated: | 1708 | truncated: | 
| 1709 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1709 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1710 | } | 1710 | } | 
| 1711 | err: | 1711 | err: | 
| 1712 | X509_NAME_free(xn); | 1712 | X509_NAME_free(xn); | 
| @@ -1739,13 +1739,13 @@ ssl3_get_new_session_ticket(SSL *s) | |||
| 1739 | } | 1739 | } | 
| 1740 | if (S3I(s)->tmp.message_type != SSL3_MT_NEWSESSION_TICKET) { | 1740 | if (S3I(s)->tmp.message_type != SSL3_MT_NEWSESSION_TICKET) { | 
| 1741 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1741 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1742 | SSLerror(SSL_R_BAD_MESSAGE_TYPE); | 1742 | SSLerror(s, SSL_R_BAD_MESSAGE_TYPE); | 
| 1743 | goto f_err; | 1743 | goto f_err; | 
| 1744 | } | 1744 | } | 
| 1745 | 1745 | ||
| 1746 | if (n < 0) { | 1746 | if (n < 0) { | 
| 1747 | al = SSL_AD_DECODE_ERROR; | 1747 | al = SSL_AD_DECODE_ERROR; | 
| 1748 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1748 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1749 | goto f_err; | 1749 | goto f_err; | 
| 1750 | } | 1750 | } | 
| 1751 | 1751 | ||
| @@ -1757,14 +1757,14 @@ ssl3_get_new_session_ticket(SSL *s) | |||
| 1757 | !CBS_get_u16_length_prefixed(&cbs, &session_ticket) || | 1757 | !CBS_get_u16_length_prefixed(&cbs, &session_ticket) || | 
| 1758 | CBS_len(&cbs) != 0) { | 1758 | CBS_len(&cbs) != 0) { | 
| 1759 | al = SSL_AD_DECODE_ERROR; | 1759 | al = SSL_AD_DECODE_ERROR; | 
| 1760 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1760 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1761 | goto f_err; | 1761 | goto f_err; | 
| 1762 | } | 1762 | } | 
| 1763 | s->session->tlsext_tick_lifetime_hint = (long)lifetime_hint; | 1763 | s->session->tlsext_tick_lifetime_hint = (long)lifetime_hint; | 
| 1764 | 1764 | ||
| 1765 | if (!CBS_stow(&session_ticket, &s->session->tlsext_tick, | 1765 | if (!CBS_stow(&session_ticket, &s->session->tlsext_tick, | 
| 1766 | &s->session->tlsext_ticklen)) { | 1766 | &s->session->tlsext_ticklen)) { | 
| 1767 | SSLerror(ERR_R_MALLOC_FAILURE); | 1767 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1768 | goto err; | 1768 | goto err; | 
| 1769 | } | 1769 | } | 
| 1770 | 1770 | ||
| @@ -1814,7 +1814,7 @@ ssl3_get_cert_status(SSL *s) | |||
| 1814 | if (n < 0) { | 1814 | if (n < 0) { | 
| 1815 | /* need at least status type + length */ | 1815 | /* need at least status type + length */ | 
| 1816 | al = SSL_AD_DECODE_ERROR; | 1816 | al = SSL_AD_DECODE_ERROR; | 
| 1817 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1817 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1818 | goto f_err; | 1818 | goto f_err; | 
| 1819 | } | 1819 | } | 
| 1820 | 1820 | ||
| @@ -1823,20 +1823,20 @@ ssl3_get_cert_status(SSL *s) | |||
| 1823 | CBS_len(&cert_status) < 3) { | 1823 | CBS_len(&cert_status) < 3) { | 
| 1824 | /* need at least status type + length */ | 1824 | /* need at least status type + length */ | 
| 1825 | al = SSL_AD_DECODE_ERROR; | 1825 | al = SSL_AD_DECODE_ERROR; | 
| 1826 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1826 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1827 | goto f_err; | 1827 | goto f_err; | 
| 1828 | } | 1828 | } | 
| 1829 | 1829 | ||
| 1830 | if (status_type != TLSEXT_STATUSTYPE_ocsp) { | 1830 | if (status_type != TLSEXT_STATUSTYPE_ocsp) { | 
| 1831 | al = SSL_AD_DECODE_ERROR; | 1831 | al = SSL_AD_DECODE_ERROR; | 
| 1832 | SSLerror(SSL_R_UNSUPPORTED_STATUS_TYPE); | 1832 | SSLerror(s, SSL_R_UNSUPPORTED_STATUS_TYPE); | 
| 1833 | goto f_err; | 1833 | goto f_err; | 
| 1834 | } | 1834 | } | 
| 1835 | 1835 | ||
| 1836 | if (!CBS_get_u24_length_prefixed(&cert_status, &response) || | 1836 | if (!CBS_get_u24_length_prefixed(&cert_status, &response) || | 
| 1837 | CBS_len(&cert_status) != 0) { | 1837 | CBS_len(&cert_status) != 0) { | 
| 1838 | al = SSL_AD_DECODE_ERROR; | 1838 | al = SSL_AD_DECODE_ERROR; | 
| 1839 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1839 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1840 | goto f_err; | 1840 | goto f_err; | 
| 1841 | } | 1841 | } | 
| 1842 | 1842 | ||
| @@ -1844,7 +1844,7 @@ ssl3_get_cert_status(SSL *s) | |||
| 1844 | &stow_len) || stow_len > INT_MAX) { | 1844 | &stow_len) || stow_len > INT_MAX) { | 
| 1845 | s->internal->tlsext_ocsp_resplen = 0; | 1845 | s->internal->tlsext_ocsp_resplen = 0; | 
| 1846 | al = SSL_AD_INTERNAL_ERROR; | 1846 | al = SSL_AD_INTERNAL_ERROR; | 
| 1847 | SSLerror(ERR_R_MALLOC_FAILURE); | 1847 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1848 | goto f_err; | 1848 | goto f_err; | 
| 1849 | } | 1849 | } | 
| 1850 | s->internal->tlsext_ocsp_resplen = (int)stow_len; | 1850 | s->internal->tlsext_ocsp_resplen = (int)stow_len; | 
| @@ -1855,12 +1855,12 @@ ssl3_get_cert_status(SSL *s) | |||
| 1855 | s->ctx->internal->tlsext_status_arg); | 1855 | s->ctx->internal->tlsext_status_arg); | 
| 1856 | if (ret == 0) { | 1856 | if (ret == 0) { | 
| 1857 | al = SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE; | 1857 | al = SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE; | 
| 1858 | SSLerror(SSL_R_INVALID_STATUS_RESPONSE); | 1858 | SSLerror(s, SSL_R_INVALID_STATUS_RESPONSE); | 
| 1859 | goto f_err; | 1859 | goto f_err; | 
| 1860 | } | 1860 | } | 
| 1861 | if (ret < 0) { | 1861 | if (ret < 0) { | 
| 1862 | al = SSL_AD_INTERNAL_ERROR; | 1862 | al = SSL_AD_INTERNAL_ERROR; | 
| 1863 | SSLerror(ERR_R_MALLOC_FAILURE); | 1863 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1864 | goto f_err; | 1864 | goto f_err; | 
| 1865 | } | 1865 | } | 
| 1866 | } | 1866 | } | 
| @@ -1885,7 +1885,7 @@ ssl3_get_server_done(SSL *s) | |||
| 1885 | if (n > 0) { | 1885 | if (n > 0) { | 
| 1886 | /* should contain no data */ | 1886 | /* should contain no data */ | 
| 1887 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 1887 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR); | 
| 1888 | SSLerror(SSL_R_LENGTH_MISMATCH); | 1888 | SSLerror(s, SSL_R_LENGTH_MISMATCH); | 
| 1889 | return (-1); | 1889 | return (-1); | 
| 1890 | } | 1890 | } | 
| 1891 | ret = 1; | 1891 | ret = 1; | 
| @@ -1909,7 +1909,7 @@ ssl3_send_client_kex_rsa(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 1909 | pkey = X509_get_pubkey(sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509); | 1909 | pkey = X509_get_pubkey(sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509); | 
| 1910 | if (pkey == NULL || pkey->type != EVP_PKEY_RSA || | 1910 | if (pkey == NULL || pkey->type != EVP_PKEY_RSA || | 
| 1911 | pkey->pkey.rsa == NULL) { | 1911 | pkey->pkey.rsa == NULL) { | 
| 1912 | SSLerror(ERR_R_INTERNAL_ERROR); | 1912 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1913 | goto err; | 1913 | goto err; | 
| 1914 | } | 1914 | } | 
| 1915 | 1915 | ||
| @@ -1918,14 +1918,14 @@ ssl3_send_client_kex_rsa(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 1918 | arc4random_buf(&pms[2], sizeof(pms) - 2); | 1918 | arc4random_buf(&pms[2], sizeof(pms) - 2); | 
| 1919 | 1919 | ||
| 1920 | if ((enc_pms = malloc(RSA_size(pkey->pkey.rsa))) == NULL) { | 1920 | if ((enc_pms = malloc(RSA_size(pkey->pkey.rsa))) == NULL) { | 
| 1921 | SSLerror(ERR_R_MALLOC_FAILURE); | 1921 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1922 | goto err; | 1922 | goto err; | 
| 1923 | } | 1923 | } | 
| 1924 | 1924 | ||
| 1925 | enc_len = RSA_public_encrypt(sizeof(pms), pms, enc_pms, pkey->pkey.rsa, | 1925 | enc_len = RSA_public_encrypt(sizeof(pms), pms, enc_pms, pkey->pkey.rsa, | 
| 1926 | RSA_PKCS1_PADDING); | 1926 | RSA_PKCS1_PADDING); | 
| 1927 | if (enc_len <= 0) { | 1927 | if (enc_len <= 0) { | 
| 1928 | SSLerror(SSL_R_BAD_RSA_ENCRYPT); | 1928 | SSLerror(s, SSL_R_BAD_RSA_ENCRYPT); | 
| 1929 | goto err; | 1929 | goto err; | 
| 1930 | } | 1930 | } | 
| 1931 | 1931 | ||
| @@ -1963,28 +1963,28 @@ ssl3_send_client_kex_dhe(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 1963 | /* Ensure that we have an ephemeral key for DHE. */ | 1963 | /* Ensure that we have an ephemeral key for DHE. */ | 
| 1964 | if (sess_cert->peer_dh_tmp == NULL) { | 1964 | if (sess_cert->peer_dh_tmp == NULL) { | 
| 1965 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE); | 1965 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE); | 
| 1966 | SSLerror(SSL_R_UNABLE_TO_FIND_DH_PARAMETERS); | 1966 | SSLerror(s, SSL_R_UNABLE_TO_FIND_DH_PARAMETERS); | 
| 1967 | goto err; | 1967 | goto err; | 
| 1968 | } | 1968 | } | 
| 1969 | dh_srvr = sess_cert->peer_dh_tmp; | 1969 | dh_srvr = sess_cert->peer_dh_tmp; | 
| 1970 | 1970 | ||
| 1971 | /* Generate a new random key. */ | 1971 | /* Generate a new random key. */ | 
| 1972 | if ((dh_clnt = DHparams_dup(dh_srvr)) == NULL) { | 1972 | if ((dh_clnt = DHparams_dup(dh_srvr)) == NULL) { | 
| 1973 | SSLerror(ERR_R_DH_LIB); | 1973 | SSLerror(s, ERR_R_DH_LIB); | 
| 1974 | goto err; | 1974 | goto err; | 
| 1975 | } | 1975 | } | 
| 1976 | if (!DH_generate_key(dh_clnt)) { | 1976 | if (!DH_generate_key(dh_clnt)) { | 
| 1977 | SSLerror(ERR_R_DH_LIB); | 1977 | SSLerror(s, ERR_R_DH_LIB); | 
| 1978 | goto err; | 1978 | goto err; | 
| 1979 | } | 1979 | } | 
| 1980 | key_size = DH_size(dh_clnt); | 1980 | key_size = DH_size(dh_clnt); | 
| 1981 | if ((key = malloc(key_size)) == NULL) { | 1981 | if ((key = malloc(key_size)) == NULL) { | 
| 1982 | SSLerror(ERR_R_MALLOC_FAILURE); | 1982 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1983 | goto err; | 1983 | goto err; | 
| 1984 | } | 1984 | } | 
| 1985 | key_len = DH_compute_key(key, dh_srvr->pub_key, dh_clnt); | 1985 | key_len = DH_compute_key(key, dh_srvr->pub_key, dh_clnt); | 
| 1986 | if (key_len <= 0) { | 1986 | if (key_len <= 0) { | 
| 1987 | SSLerror(ERR_R_DH_LIB); | 1987 | SSLerror(s, ERR_R_DH_LIB); | 
| 1988 | goto err; | 1988 | goto err; | 
| 1989 | } | 1989 | } | 
| 1990 | 1990 | ||
| @@ -2028,35 +2028,35 @@ ssl3_send_client_kex_ecdhe_ecp(SSL *s, SESS_CERT *sc, CBB *cbb) | |||
| 2028 | 2028 | ||
| 2029 | if ((group = EC_KEY_get0_group(sc->peer_ecdh_tmp)) == NULL || | 2029 | if ((group = EC_KEY_get0_group(sc->peer_ecdh_tmp)) == NULL || | 
| 2030 | (point = EC_KEY_get0_public_key(sc->peer_ecdh_tmp)) == NULL) { | 2030 | (point = EC_KEY_get0_public_key(sc->peer_ecdh_tmp)) == NULL) { | 
| 2031 | SSLerror(ERR_R_INTERNAL_ERROR); | 2031 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2032 | goto err; | 2032 | goto err; | 
| 2033 | } | 2033 | } | 
| 2034 | 2034 | ||
| 2035 | if ((ecdh = EC_KEY_new()) == NULL) { | 2035 | if ((ecdh = EC_KEY_new()) == NULL) { | 
| 2036 | SSLerror(ERR_R_MALLOC_FAILURE); | 2036 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2037 | goto err; | 2037 | goto err; | 
| 2038 | } | 2038 | } | 
| 2039 | 2039 | ||
| 2040 | if (!EC_KEY_set_group(ecdh, group)) { | 2040 | if (!EC_KEY_set_group(ecdh, group)) { | 
| 2041 | SSLerror(ERR_R_EC_LIB); | 2041 | SSLerror(s, ERR_R_EC_LIB); | 
| 2042 | goto err; | 2042 | goto err; | 
| 2043 | } | 2043 | } | 
| 2044 | 2044 | ||
| 2045 | /* Generate a new ECDH key pair. */ | 2045 | /* Generate a new ECDH key pair. */ | 
| 2046 | if (!(EC_KEY_generate_key(ecdh))) { | 2046 | if (!(EC_KEY_generate_key(ecdh))) { | 
| 2047 | SSLerror(ERR_R_ECDH_LIB); | 2047 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 2048 | goto err; | 2048 | goto err; | 
| 2049 | } | 2049 | } | 
| 2050 | if ((key_size = ECDH_size(ecdh)) <= 0) { | 2050 | if ((key_size = ECDH_size(ecdh)) <= 0) { | 
| 2051 | SSLerror(ERR_R_ECDH_LIB); | 2051 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 2052 | goto err; | 2052 | goto err; | 
| 2053 | } | 2053 | } | 
| 2054 | if ((key = malloc(key_size)) == NULL) { | 2054 | if ((key = malloc(key_size)) == NULL) { | 
| 2055 | SSLerror(ERR_R_MALLOC_FAILURE); | 2055 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2056 | } | 2056 | } | 
| 2057 | key_len = ECDH_compute_key(key, key_size, point, ecdh, NULL); | 2057 | key_len = ECDH_compute_key(key, key_size, point, ecdh, NULL); | 
| 2058 | if (key_len <= 0) { | 2058 | if (key_len <= 0) { | 
| 2059 | SSLerror(ERR_R_ECDH_LIB); | 2059 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 2060 | goto err; | 2060 | goto err; | 
| 2061 | } | 2061 | } | 
| 2062 | 2062 | ||
| @@ -2068,12 +2068,12 @@ ssl3_send_client_kex_ecdhe_ecp(SSL *s, SESS_CERT *sc, CBB *cbb) | |||
| 2068 | encoded_len = EC_POINT_point2oct(group, EC_KEY_get0_public_key(ecdh), | 2068 | encoded_len = EC_POINT_point2oct(group, EC_KEY_get0_public_key(ecdh), | 
| 2069 | POINT_CONVERSION_UNCOMPRESSED, NULL, 0, NULL); | 2069 | POINT_CONVERSION_UNCOMPRESSED, NULL, 0, NULL); | 
| 2070 | if (encoded_len == 0) { | 2070 | if (encoded_len == 0) { | 
| 2071 | SSLerror(ERR_R_ECDH_LIB); | 2071 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 2072 | goto err; | 2072 | goto err; | 
| 2073 | } | 2073 | } | 
| 2074 | 2074 | ||
| 2075 | if ((bn_ctx = BN_CTX_new()) == NULL) { | 2075 | if ((bn_ctx = BN_CTX_new()) == NULL) { | 
| 2076 | SSLerror(ERR_R_MALLOC_FAILURE); | 2076 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2077 | goto err; | 2077 | goto err; | 
| 2078 | } | 2078 | } | 
| 2079 | 2079 | ||
| @@ -2159,7 +2159,7 @@ ssl3_send_client_kex_ecdhe(SSL *s, SESS_CERT *sc, CBB *cbb) | |||
| 2159 | goto err; | 2159 | goto err; | 
| 2160 | } else { | 2160 | } else { | 
| 2161 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE); | 2161 | ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE); | 
| 2162 | SSLerror(ERR_R_INTERNAL_ERROR); | 2162 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2163 | goto err; | 2163 | goto err; | 
| 2164 | } | 2164 | } | 
| 2165 | 2165 | ||
| @@ -2186,7 +2186,7 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 2186 | /* Get server sertificate PKEY and create ctx from it */ | 2186 | /* Get server sertificate PKEY and create ctx from it */ | 
| 2187 | peer_cert = sess_cert->peer_pkeys[SSL_PKEY_GOST01].x509; | 2187 | peer_cert = sess_cert->peer_pkeys[SSL_PKEY_GOST01].x509; | 
| 2188 | if (peer_cert == NULL) { | 2188 | if (peer_cert == NULL) { | 
| 2189 | SSLerror(SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER); | 2189 | SSLerror(s, SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER); | 
| 2190 | goto err; | 2190 | goto err; | 
| 2191 | } | 2191 | } | 
| 2192 | 2192 | ||
| @@ -2222,7 +2222,7 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 2222 | */ | 2222 | */ | 
| 2223 | ukm_hash = EVP_MD_CTX_create(); | 2223 | ukm_hash = EVP_MD_CTX_create(); | 
| 2224 | if (ukm_hash == NULL) { | 2224 | if (ukm_hash == NULL) { | 
| 2225 | SSLerror(ERR_R_MALLOC_FAILURE); | 2225 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2226 | goto err; | 2226 | goto err; | 
| 2227 | } | 2227 | } | 
| 2228 | 2228 | ||
| @@ -2238,7 +2238,7 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 2238 | EVP_MD_CTX_destroy(ukm_hash); | 2238 | EVP_MD_CTX_destroy(ukm_hash); | 
| 2239 | if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, EVP_PKEY_OP_ENCRYPT, | 2239 | if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, EVP_PKEY_OP_ENCRYPT, | 
| 2240 | EVP_PKEY_CTRL_SET_IV, 8, shared_ukm) < 0) { | 2240 | EVP_PKEY_CTRL_SET_IV, 8, shared_ukm) < 0) { | 
| 2241 | SSLerror(SSL_R_LIBRARY_BUG); | 2241 | SSLerror(s, SSL_R_LIBRARY_BUG); | 
| 2242 | goto err; | 2242 | goto err; | 
| 2243 | } | 2243 | } | 
| 2244 | 2244 | ||
| @@ -2248,7 +2248,7 @@ ssl3_send_client_kex_gost(SSL *s, SESS_CERT *sess_cert, CBB *cbb) | |||
| 2248 | msglen = 255; | 2248 | msglen = 255; | 
| 2249 | if (EVP_PKEY_encrypt(pkey_ctx, tmp, &msglen, premaster_secret, | 2249 | if (EVP_PKEY_encrypt(pkey_ctx, tmp, &msglen, premaster_secret, | 
| 2250 | 32) < 0) { | 2250 | 32) < 0) { | 
| 2251 | SSLerror(SSL_R_LIBRARY_BUG); | 2251 | SSLerror(s, SSL_R_LIBRARY_BUG); | 
| 2252 | goto err; | 2252 | goto err; | 
| 2253 | } | 2253 | } | 
| 2254 | 2254 | ||
| @@ -2294,7 +2294,7 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2294 | if ((sess_cert = SSI(s)->sess_cert) == NULL) { | 2294 | if ((sess_cert = SSI(s)->sess_cert) == NULL) { | 
| 2295 | ssl3_send_alert(s, SSL3_AL_FATAL, | 2295 | ssl3_send_alert(s, SSL3_AL_FATAL, | 
| 2296 | SSL_AD_UNEXPECTED_MESSAGE); | 2296 | SSL_AD_UNEXPECTED_MESSAGE); | 
| 2297 | SSLerror(ERR_R_INTERNAL_ERROR); | 2297 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2298 | goto err; | 2298 | goto err; | 
| 2299 | } | 2299 | } | 
| 2300 | 2300 | ||
| @@ -2317,7 +2317,7 @@ ssl3_send_client_key_exchange(SSL *s) | |||
| 2317 | } else { | 2317 | } else { | 
| 2318 | ssl3_send_alert(s, SSL3_AL_FATAL, | 2318 | ssl3_send_alert(s, SSL3_AL_FATAL, | 
| 2319 | SSL_AD_HANDSHAKE_FAILURE); | 2319 | SSL_AD_HANDSHAKE_FAILURE); | 
| 2320 | SSLerror(ERR_R_INTERNAL_ERROR); | 2320 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2321 | goto err; | 2321 | goto err; | 
| 2322 | } | 2322 | } | 
| 2323 | 2323 | ||
| @@ -2379,14 +2379,14 @@ ssl3_send_client_verify(SSL *s) | |||
| 2379 | &hdata); | 2379 | &hdata); | 
| 2380 | if (hdatalen <= 0 || | 2380 | if (hdatalen <= 0 || | 
| 2381 | !tls12_get_sigandhash(p, pkey, md)) { | 2381 | !tls12_get_sigandhash(p, pkey, md)) { | 
| 2382 | SSLerror(ERR_R_INTERNAL_ERROR); | 2382 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2383 | goto err; | 2383 | goto err; | 
| 2384 | } | 2384 | } | 
| 2385 | p += 2; | 2385 | p += 2; | 
| 2386 | if (!EVP_SignInit_ex(&mctx, md, NULL) || | 2386 | if (!EVP_SignInit_ex(&mctx, md, NULL) || | 
| 2387 | !EVP_SignUpdate(&mctx, hdata, hdatalen) || | 2387 | !EVP_SignUpdate(&mctx, hdata, hdatalen) || | 
| 2388 | !EVP_SignFinal(&mctx, p + 2, &u, pkey)) { | 2388 | !EVP_SignFinal(&mctx, p + 2, &u, pkey)) { | 
| 2389 | SSLerror(ERR_R_EVP_LIB); | 2389 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2390 | goto err; | 2390 | goto err; | 
| 2391 | } | 2391 | } | 
| 2392 | s2n(u, p); | 2392 | s2n(u, p); | 
| @@ -2399,7 +2399,7 @@ ssl3_send_client_verify(SSL *s) | |||
| 2399 | if (RSA_sign(NID_md5_sha1, data, | 2399 | if (RSA_sign(NID_md5_sha1, data, | 
| 2400 | MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH, &(p[2]), | 2400 | MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH, &(p[2]), | 
| 2401 | &u, pkey->pkey.rsa) <= 0 ) { | 2401 | &u, pkey->pkey.rsa) <= 0 ) { | 
| 2402 | SSLerror(ERR_R_RSA_LIB); | 2402 | SSLerror(s, ERR_R_RSA_LIB); | 
| 2403 | goto err; | 2403 | goto err; | 
| 2404 | } | 2404 | } | 
| 2405 | s2n(u, p); | 2405 | s2n(u, p); | 
| @@ -2409,7 +2409,7 @@ ssl3_send_client_verify(SSL *s) | |||
| 2409 | &(data[MD5_DIGEST_LENGTH]), | 2409 | &(data[MD5_DIGEST_LENGTH]), | 
| 2410 | SHA_DIGEST_LENGTH, &(p[2]), | 2410 | SHA_DIGEST_LENGTH, &(p[2]), | 
| 2411 | (unsigned int *)&j, pkey->pkey.dsa)) { | 2411 | (unsigned int *)&j, pkey->pkey.dsa)) { | 
| 2412 | SSLerror(ERR_R_DSA_LIB); | 2412 | SSLerror(s, ERR_R_DSA_LIB); | 
| 2413 | goto err; | 2413 | goto err; | 
| 2414 | } | 2414 | } | 
| 2415 | s2n(j, p); | 2415 | s2n(j, p); | 
| @@ -2419,7 +2419,7 @@ ssl3_send_client_verify(SSL *s) | |||
| 2419 | &(data[MD5_DIGEST_LENGTH]), | 2419 | &(data[MD5_DIGEST_LENGTH]), | 
| 2420 | SHA_DIGEST_LENGTH, &(p[2]), | 2420 | SHA_DIGEST_LENGTH, &(p[2]), | 
| 2421 | (unsigned int *)&j, pkey->pkey.ec)) { | 2421 | (unsigned int *)&j, pkey->pkey.ec)) { | 
| 2422 | SSLerror(ERR_R_ECDSA_LIB); | 2422 | SSLerror(s, ERR_R_ECDSA_LIB); | 
| 2423 | goto err; | 2423 | goto err; | 
| 2424 | } | 2424 | } | 
| 2425 | s2n(j, p); | 2425 | s2n(j, p); | 
| @@ -2436,12 +2436,12 @@ ssl3_send_client_verify(SSL *s) | |||
| 2436 | 2436 | ||
| 2437 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 2437 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 
| 2438 | if (hdatalen <= 0) { | 2438 | if (hdatalen <= 0) { | 
| 2439 | SSLerror(ERR_R_INTERNAL_ERROR); | 2439 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2440 | goto err; | 2440 | goto err; | 
| 2441 | } | 2441 | } | 
| 2442 | if (!EVP_PKEY_get_default_digest_nid(pkey, &nid) || | 2442 | if (!EVP_PKEY_get_default_digest_nid(pkey, &nid) || | 
| 2443 | !(md = EVP_get_digestbynid(nid))) { | 2443 | !(md = EVP_get_digestbynid(nid))) { | 
| 2444 | SSLerror(ERR_R_EVP_LIB); | 2444 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2445 | goto err; | 2445 | goto err; | 
| 2446 | } | 2446 | } | 
| 2447 | if (!EVP_DigestInit_ex(&mctx, md, NULL) || | 2447 | if (!EVP_DigestInit_ex(&mctx, md, NULL) || | 
| @@ -2454,7 +2454,7 @@ ssl3_send_client_verify(SSL *s) | |||
| 2454 | NULL) <= 0) || | 2454 | NULL) <= 0) || | 
| 2455 | (EVP_PKEY_sign(pctx, &(p[2]), &sigsize, | 2455 | (EVP_PKEY_sign(pctx, &(p[2]), &sigsize, | 
| 2456 | signbuf, u) <= 0)) { | 2456 | signbuf, u) <= 0)) { | 
| 2457 | SSLerror(ERR_R_EVP_LIB); | 2457 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2458 | goto err; | 2458 | goto err; | 
| 2459 | } | 2459 | } | 
| 2460 | if (!tls1_digest_cached_records(s)) | 2460 | if (!tls1_digest_cached_records(s)) | 
| @@ -2464,7 +2464,7 @@ ssl3_send_client_verify(SSL *s) | |||
| 2464 | n = j + 2; | 2464 | n = j + 2; | 
| 2465 | #endif | 2465 | #endif | 
| 2466 | } else { | 2466 | } else { | 
| 2467 | SSLerror(ERR_R_INTERNAL_ERROR); | 2467 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2468 | goto err; | 2468 | goto err; | 
| 2469 | } | 2469 | } | 
| 2470 | 2470 | ||
| @@ -2522,7 +2522,7 @@ ssl3_send_client_certificate(SSL *s) | |||
| 2522 | i = 0; | 2522 | i = 0; | 
| 2523 | } else if (i == 1) { | 2523 | } else if (i == 1) { | 
| 2524 | i = 0; | 2524 | i = 0; | 
| 2525 | SSLerror(SSL_R_BAD_DATA_RETURNED_BY_CALLBACK); | 2525 | SSLerror(s, SSL_R_BAD_DATA_RETURNED_BY_CALLBACK); | 
| 2526 | } | 2526 | } | 
| 2527 | 2527 | ||
| 2528 | X509_free(x509); | 2528 | X509_free(x509); | 
| @@ -2576,7 +2576,7 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2576 | 2576 | ||
| 2577 | sc = SSI(s)->sess_cert; | 2577 | sc = SSI(s)->sess_cert; | 
| 2578 | if (sc == NULL) { | 2578 | if (sc == NULL) { | 
| 2579 | SSLerror(ERR_R_INTERNAL_ERROR); | 2579 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2580 | goto err; | 2580 | goto err; | 
| 2581 | } | 2581 | } | 
| 2582 | dh = SSI(s)->sess_cert->peer_dh_tmp; | 2582 | dh = SSI(s)->sess_cert->peer_dh_tmp; | 
| @@ -2588,7 +2588,7 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2588 | if (ssl_check_srvr_ecc_cert_and_alg( | 2588 | if (ssl_check_srvr_ecc_cert_and_alg( | 
| 2589 | sc->peer_pkeys[idx].x509, s) == 0) { | 2589 | sc->peer_pkeys[idx].x509, s) == 0) { | 
| 2590 | /* check failed */ | 2590 | /* check failed */ | 
| 2591 | SSLerror(SSL_R_BAD_ECC_CERT); | 2591 | SSLerror(s, SSL_R_BAD_ECC_CERT); | 
| 2592 | goto f_err; | 2592 | goto f_err; | 
| 2593 | } else { | 2593 | } else { | 
| 2594 | return (1); | 2594 | return (1); | 
| @@ -2600,21 +2600,21 @@ ssl3_check_cert_and_algorithm(SSL *s) | |||
| 2600 | 2600 | ||
| 2601 | /* Check that we have a certificate if we require one. */ | 2601 | /* Check that we have a certificate if we require one. */ | 
| 2602 | if ((alg_a & SSL_aRSA) && !has_bits(i, EVP_PK_RSA|EVP_PKT_SIGN)) { | 2602 | if ((alg_a & SSL_aRSA) && !has_bits(i, EVP_PK_RSA|EVP_PKT_SIGN)) { | 
| 2603 | SSLerror(SSL_R_MISSING_RSA_SIGNING_CERT); | 2603 | SSLerror(s, SSL_R_MISSING_RSA_SIGNING_CERT); | 
| 2604 | goto f_err; | 2604 | goto f_err; | 
| 2605 | } else if ((alg_a & SSL_aDSS) && | 2605 | } else if ((alg_a & SSL_aDSS) && | 
| 2606 | !has_bits(i, EVP_PK_DSA|EVP_PKT_SIGN)) { | 2606 | !has_bits(i, EVP_PK_DSA|EVP_PKT_SIGN)) { | 
| 2607 | SSLerror(SSL_R_MISSING_DSA_SIGNING_CERT); | 2607 | SSLerror(s, SSL_R_MISSING_DSA_SIGNING_CERT); | 
| 2608 | goto f_err; | 2608 | goto f_err; | 
| 2609 | } | 2609 | } | 
| 2610 | if ((alg_k & SSL_kRSA) && | 2610 | if ((alg_k & SSL_kRSA) && | 
| 2611 | !has_bits(i, EVP_PK_RSA|EVP_PKT_ENC)) { | 2611 | !has_bits(i, EVP_PK_RSA|EVP_PKT_ENC)) { | 
| 2612 | SSLerror(SSL_R_MISSING_RSA_ENCRYPTING_CERT); | 2612 | SSLerror(s, SSL_R_MISSING_RSA_ENCRYPTING_CERT); | 
| 2613 | goto f_err; | 2613 | goto f_err; | 
| 2614 | } | 2614 | } | 
| 2615 | if ((alg_k & SSL_kDHE) && | 2615 | if ((alg_k & SSL_kDHE) && | 
| 2616 | !(has_bits(i, EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) { | 2616 | !(has_bits(i, EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) { | 
| 2617 | SSLerror(SSL_R_MISSING_DH_KEY); | 2617 | SSLerror(s, SSL_R_MISSING_DH_KEY); | 
| 2618 | goto f_err; | 2618 | goto f_err; | 
| 2619 | } | 2619 | } | 
| 2620 | 2620 | ||
| diff --git a/src/lib/libssl/ssl_err.c b/src/lib/libssl/ssl_err.c index 525ba2146b..f9e450125b 100644 --- a/src/lib/libssl/ssl_err.c +++ b/src/lib/libssl/ssl_err.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_err.c,v 1.32 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: ssl_err.c,v 1.33 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* ==================================================================== | 2 | /* ==================================================================== | 
| 3 | * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -69,8 +69,94 @@ | |||
| 69 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_SSL,func,0) | 69 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_SSL,func,0) | 
| 70 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_SSL,0,reason) | 70 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_SSL,0,reason) | 
| 71 | 71 | ||
| 72 | /* See SSL_state_func_code below */ | ||
| 72 | static ERR_STRING_DATA SSL_str_functs[]= { | 73 | static ERR_STRING_DATA SSL_str_functs[]= { | 
| 73 | {ERR_FUNC(0xfff), "SSL_internal"}, | 74 | {ERR_FUNC(1), "CONNECT_CW_FLUSH"}, | 
| 75 | {ERR_FUNC(2), "CONNECT_CW_CLNT_HELLO"}, | ||
| 76 | {ERR_FUNC(3), "CONNECT_CW_CLNT_HELLO"}, | ||
| 77 | {ERR_FUNC(4), "CONNECT_CR_SRVR_HELLO"}, | ||
| 78 | {ERR_FUNC(5), "CONNECT_CR_SRVR_HELLO"}, | ||
| 79 | {ERR_FUNC(6), "CONNECT_CR_CERT"}, | ||
| 80 | {ERR_FUNC(7), "CONNECT_CR_CERT"}, | ||
| 81 | {ERR_FUNC(8), "CONNECT_CR_KEY_EXCH"}, | ||
| 82 | {ERR_FUNC(9), "CONNECT_CR_KEY_EXCH"}, | ||
| 83 | {ERR_FUNC(10), "CONNECT_CR_CERT_REQ"}, | ||
| 84 | {ERR_FUNC(11), "CONNECT_CR_CERT_REQ"}, | ||
| 85 | {ERR_FUNC(12), "CONNECT_CR_SRVR_DONE"}, | ||
| 86 | {ERR_FUNC(13), "CONNECT_CR_SRVR_DONE"}, | ||
| 87 | {ERR_FUNC(14), "CONNECT_CW_CERT"}, | ||
| 88 | {ERR_FUNC(15), "CONNECT_CW_CERT"}, | ||
| 89 | {ERR_FUNC(16), "CONNECT_CW_CERT_C"}, | ||
| 90 | {ERR_FUNC(17), "CONNECT_CW_CERT_D"}, | ||
| 91 | {ERR_FUNC(18), "CONNECT_CW_KEY_EXCH"}, | ||
| 92 | {ERR_FUNC(19), "CONNECT_CW_KEY_EXCH"}, | ||
| 93 | {ERR_FUNC(20), "CONNECT_CW_CERT_VRFY"}, | ||
| 94 | {ERR_FUNC(21), "CONNECT_CW_CERT_VRFY"}, | ||
| 95 | {ERR_FUNC(22), "CONNECT_CW_CHANGE"}, | ||
| 96 | {ERR_FUNC(23), "CONNECT_CW_CHANGE"}, | ||
| 97 | {ERR_FUNC(24), "CONNECT_CW_NEXT_PROTO"}, | ||
| 98 | {ERR_FUNC(25), "CONNECT_CW_NEXT_PROTO"}, | ||
| 99 | {ERR_FUNC(26), "CONNECT_CW_FINISHED"}, | ||
| 100 | {ERR_FUNC(27), "CONNECT_CW_FINISHED"}, | ||
| 101 | {ERR_FUNC(28), "CONNECT_CR_CHANGE"}, | ||
| 102 | {ERR_FUNC(29), "CONNECT_CR_CHANGE"}, | ||
| 103 | {ERR_FUNC(30), "CONNECT_CR_FINISHED"}, | ||
| 104 | {ERR_FUNC(31), "CONNECT_CR_FINISHED"}, | ||
| 105 | {ERR_FUNC(32), "CONNECT_CR_SESSION_TICKET"}, | ||
| 106 | {ERR_FUNC(33), "CONNECT_CR_SESSION_TICKET"}, | ||
| 107 | {ERR_FUNC(34), "CONNECT_CR_CERT_STATUS"}, | ||
| 108 | {ERR_FUNC(35), "CONNECT_CR_CERT_STATUS"}, | ||
| 109 | {ERR_FUNC(36), "ACCEPT_SW_FLUSH"}, | ||
| 110 | {ERR_FUNC(37), "ACCEPT_SR_CLNT_HELLO"}, | ||
| 111 | {ERR_FUNC(38), "ACCEPT_SR_CLNT_HELLO"}, | ||
| 112 | {ERR_FUNC(39), "ACCEPT_SR_CLNT_HELLO_C"}, | ||
| 113 | {ERR_FUNC(40), "ACCEPT_SW_HELLO_REQ"}, | ||
| 114 | {ERR_FUNC(41), "ACCEPT_SW_HELLO_REQ"}, | ||
| 115 | {ERR_FUNC(42), "ACCEPT_SW_HELLO_REQ_C"}, | ||
| 116 | {ERR_FUNC(43), "ACCEPT_SW_SRVR_HELLO"}, | ||
| 117 | {ERR_FUNC(44), "ACCEPT_SW_SRVR_HELLO"}, | ||
| 118 | {ERR_FUNC(45), "ACCEPT_SW_CERT"}, | ||
| 119 | {ERR_FUNC(46), "ACCEPT_SW_CERT"}, | ||
| 120 | {ERR_FUNC(47), "ACCEPT_SW_KEY_EXCH"}, | ||
| 121 | {ERR_FUNC(48), "ACCEPT_SW_KEY_EXCH"}, | ||
| 122 | {ERR_FUNC(49), "ACCEPT_SW_CERT_REQ"}, | ||
| 123 | {ERR_FUNC(50), "ACCEPT_SW_CERT_REQ"}, | ||
| 124 | {ERR_FUNC(51), "ACCEPT_SW_SRVR_DONE"}, | ||
| 125 | {ERR_FUNC(52), "ACCEPT_SW_SRVR_DONE"}, | ||
| 126 | {ERR_FUNC(53), "ACCEPT_SR_CERT"}, | ||
| 127 | {ERR_FUNC(54), "ACCEPT_SR_CERT"}, | ||
| 128 | {ERR_FUNC(55), "ACCEPT_SR_KEY_EXCH"}, | ||
| 129 | {ERR_FUNC(56), "ACCEPT_SR_KEY_EXCH"}, | ||
| 130 | {ERR_FUNC(57), "ACCEPT_SR_CERT_VRFY"}, | ||
| 131 | {ERR_FUNC(58), "ACCEPT_SR_CERT_VRFY"}, | ||
| 132 | {ERR_FUNC(59), "ACCEPT_SR_CHANGE"}, | ||
| 133 | {ERR_FUNC(60), "ACCEPT_SR_CHANGE"}, | ||
| 134 | {ERR_FUNC(61), "ACCEPT_SR_NEXT_PROTO"}, | ||
| 135 | {ERR_FUNC(62), "ACCEPT_SR_NEXT_PROTO"}, | ||
| 136 | {ERR_FUNC(63), "ACCEPT_SR_FINISHED"}, | ||
| 137 | {ERR_FUNC(64), "ACCEPT_SR_FINISHED"}, | ||
| 138 | {ERR_FUNC(65), "ACCEPT_SW_CHANGE"}, | ||
| 139 | {ERR_FUNC(66), "ACCEPT_SW_CHANGE"}, | ||
| 140 | {ERR_FUNC(67), "ACCEPT_SW_FINISHED"}, | ||
| 141 | {ERR_FUNC(68), "ACCEPT_SW_FINISHED"}, | ||
| 142 | {ERR_FUNC(69), "ACCEPT_SW_SESSION_TICKET"}, | ||
| 143 | {ERR_FUNC(70), "ACCEPT_SW_SESSION_TICKET"}, | ||
| 144 | {ERR_FUNC(71), "ACCEPT_SW_CERT_STATUS"}, | ||
| 145 | {ERR_FUNC(72), "ACCEPT_SW_CERT_STATUS"}, | ||
| 146 | {ERR_FUNC(73), "ST_BEFORE"}, | ||
| 147 | {ERR_FUNC(74), "ST_ACCEPT"}, | ||
| 148 | {ERR_FUNC(75), "ST_CONNECT"}, | ||
| 149 | {ERR_FUNC(76), "ST_OK"}, | ||
| 150 | {ERR_FUNC(77), "ST_RENEGOTIATE"}, | ||
| 151 | {ERR_FUNC(78), "ST_BEFORE_CONNECT"}, | ||
| 152 | {ERR_FUNC(79), "ST_OK_CONNECT"}, | ||
| 153 | {ERR_FUNC(80), "ST_BEFORE_ACCEPT"}, | ||
| 154 | {ERR_FUNC(81), "ST_OK_ACCEPT"}, | ||
| 155 | {ERR_FUNC(83), "DTLS1_ST_CR_HELLO_VERIFY_REQUEST"}, | ||
| 156 | {ERR_FUNC(84), "DTLS1_ST_CR_HELLO_VERIFY_REQUEST"}, | ||
| 157 | {ERR_FUNC(85), "DTLS1_ST_SW_HELLO_VERIFY_REQUEST"}, | ||
| 158 | {ERR_FUNC(86), "DTLS1_ST_SW_HELLO_VERIFY_REQUEST"}, | ||
| 159 | {ERR_FUNC(0xfff), "(UNKNOWN)SSL_internal"}, | ||
| 74 | {0, NULL} | 160 | {0, NULL} | 
| 75 | }; | 161 | }; | 
| 76 | 162 | ||
| @@ -402,3 +488,182 @@ SSL_load_error_strings(void) | |||
| 402 | ERR_load_SSL_strings(); | 488 | ERR_load_SSL_strings(); | 
| 403 | #endif | 489 | #endif | 
| 404 | } | 490 | } | 
| 491 | |||
| 492 | int | ||
| 493 | SSL_state_func_code(int state) { | ||
| 494 | switch (state) { | ||
| 495 | case SSL3_ST_CW_FLUSH: | ||
| 496 | return 1; | ||
| 497 | case SSL3_ST_CW_CLNT_HELLO_A: | ||
| 498 | return 2; | ||
| 499 | case SSL3_ST_CW_CLNT_HELLO_B: | ||
| 500 | return 3; | ||
| 501 | case SSL3_ST_CR_SRVR_HELLO_A: | ||
| 502 | return 4; | ||
| 503 | case SSL3_ST_CR_SRVR_HELLO_B: | ||
| 504 | return 5; | ||
| 505 | case SSL3_ST_CR_CERT_A: | ||
| 506 | return 6; | ||
| 507 | case SSL3_ST_CR_CERT_B: | ||
| 508 | return 7; | ||
| 509 | case SSL3_ST_CR_KEY_EXCH_A: | ||
| 510 | return 8; | ||
| 511 | case SSL3_ST_CR_KEY_EXCH_B: | ||
| 512 | return 9; | ||
| 513 | case SSL3_ST_CR_CERT_REQ_A: | ||
| 514 | return 10; | ||
| 515 | case SSL3_ST_CR_CERT_REQ_B: | ||
| 516 | return 11; | ||
| 517 | case SSL3_ST_CR_SRVR_DONE_A: | ||
| 518 | return 12; | ||
| 519 | case SSL3_ST_CR_SRVR_DONE_B: | ||
| 520 | return 13; | ||
| 521 | case SSL3_ST_CW_CERT_A: | ||
| 522 | return 14; | ||
| 523 | case SSL3_ST_CW_CERT_B: | ||
| 524 | return 15; | ||
| 525 | case SSL3_ST_CW_CERT_C: | ||
| 526 | return 16; | ||
| 527 | case SSL3_ST_CW_CERT_D: | ||
| 528 | return 17; | ||
| 529 | case SSL3_ST_CW_KEY_EXCH_A: | ||
| 530 | return 18; | ||
| 531 | case SSL3_ST_CW_KEY_EXCH_B: | ||
| 532 | return 19; | ||
| 533 | case SSL3_ST_CW_CERT_VRFY_A: | ||
| 534 | return 20; | ||
| 535 | case SSL3_ST_CW_CERT_VRFY_B: | ||
| 536 | return 21; | ||
| 537 | case SSL3_ST_CW_CHANGE_A: | ||
| 538 | return 22; | ||
| 539 | case SSL3_ST_CW_CHANGE_B: | ||
| 540 | return 23; | ||
| 541 | case SSL3_ST_CW_NEXT_PROTO_A: | ||
| 542 | return 24; | ||
| 543 | case SSL3_ST_CW_NEXT_PROTO_B: | ||
| 544 | return 25; | ||
| 545 | case SSL3_ST_CW_FINISHED_A: | ||
| 546 | return 26; | ||
| 547 | case SSL3_ST_CW_FINISHED_B: | ||
| 548 | return 27; | ||
| 549 | case SSL3_ST_CR_CHANGE_A: | ||
| 550 | return 28; | ||
| 551 | case SSL3_ST_CR_CHANGE_B: | ||
| 552 | return 29; | ||
| 553 | case SSL3_ST_CR_FINISHED_A: | ||
| 554 | return 30; | ||
| 555 | case SSL3_ST_CR_FINISHED_B: | ||
| 556 | return 31; | ||
| 557 | case SSL3_ST_CR_SESSION_TICKET_A: | ||
| 558 | return 32; | ||
| 559 | case SSL3_ST_CR_SESSION_TICKET_B: | ||
| 560 | return 33; | ||
| 561 | case SSL3_ST_CR_CERT_STATUS_A: | ||
| 562 | return 34; | ||
| 563 | case SSL3_ST_CR_CERT_STATUS_B: | ||
| 564 | return 35; | ||
| 565 | case SSL3_ST_SW_FLUSH: | ||
| 566 | return 36; | ||
| 567 | case SSL3_ST_SR_CLNT_HELLO_A: | ||
| 568 | return 37; | ||
| 569 | case SSL3_ST_SR_CLNT_HELLO_B: | ||
| 570 | return 38; | ||
| 571 | case SSL3_ST_SR_CLNT_HELLO_C: | ||
| 572 | return 39; | ||
| 573 | case SSL3_ST_SW_HELLO_REQ_A: | ||
| 574 | return 40; | ||
| 575 | case SSL3_ST_SW_HELLO_REQ_B: | ||
| 576 | return 41; | ||
| 577 | case SSL3_ST_SW_HELLO_REQ_C: | ||
| 578 | return 42; | ||
| 579 | case SSL3_ST_SW_SRVR_HELLO_A: | ||
| 580 | return 43; | ||
| 581 | case SSL3_ST_SW_SRVR_HELLO_B: | ||
| 582 | return 44; | ||
| 583 | case SSL3_ST_SW_CERT_A: | ||
| 584 | return 45; | ||
| 585 | case SSL3_ST_SW_CERT_B: | ||
| 586 | return 46; | ||
| 587 | case SSL3_ST_SW_KEY_EXCH_A: | ||
| 588 | return 47; | ||
| 589 | case SSL3_ST_SW_KEY_EXCH_B: | ||
| 590 | return 48; | ||
| 591 | case SSL3_ST_SW_CERT_REQ_A: | ||
| 592 | return 49; | ||
| 593 | case SSL3_ST_SW_CERT_REQ_B: | ||
| 594 | return 50; | ||
| 595 | case SSL3_ST_SW_SRVR_DONE_A: | ||
| 596 | return 51; | ||
| 597 | case SSL3_ST_SW_SRVR_DONE_B: | ||
| 598 | return 52; | ||
| 599 | case SSL3_ST_SR_CERT_A: | ||
| 600 | return 53; | ||
| 601 | case SSL3_ST_SR_CERT_B: | ||
| 602 | return 54; | ||
| 603 | case SSL3_ST_SR_KEY_EXCH_A: | ||
| 604 | return 55; | ||
| 605 | case SSL3_ST_SR_KEY_EXCH_B: | ||
| 606 | return 56; | ||
| 607 | case SSL3_ST_SR_CERT_VRFY_A: | ||
| 608 | return 57; | ||
| 609 | case SSL3_ST_SR_CERT_VRFY_B: | ||
| 610 | return 58; | ||
| 611 | case SSL3_ST_SR_CHANGE_A: | ||
| 612 | return 59; | ||
| 613 | case SSL3_ST_SR_CHANGE_B: | ||
| 614 | return 60; | ||
| 615 | case SSL3_ST_SR_NEXT_PROTO_A: | ||
| 616 | return 61; | ||
| 617 | case SSL3_ST_SR_NEXT_PROTO_B: | ||
| 618 | return 62; | ||
| 619 | case SSL3_ST_SR_FINISHED_A: | ||
| 620 | return 63; | ||
| 621 | case SSL3_ST_SR_FINISHED_B: | ||
| 622 | return 64; | ||
| 623 | case SSL3_ST_SW_CHANGE_A: | ||
| 624 | return 65; | ||
| 625 | case SSL3_ST_SW_CHANGE_B: | ||
| 626 | return 66; | ||
| 627 | case SSL3_ST_SW_FINISHED_A: | ||
| 628 | return 67; | ||
| 629 | case SSL3_ST_SW_FINISHED_B: | ||
| 630 | return 68; | ||
| 631 | case SSL3_ST_SW_SESSION_TICKET_A: | ||
| 632 | return 69; | ||
| 633 | case SSL3_ST_SW_SESSION_TICKET_B: | ||
| 634 | return 70; | ||
| 635 | case SSL3_ST_SW_CERT_STATUS_A: | ||
| 636 | return 71; | ||
| 637 | case SSL3_ST_SW_CERT_STATUS_B: | ||
| 638 | return 72; | ||
| 639 | case SSL_ST_BEFORE: | ||
| 640 | return 73; | ||
| 641 | case SSL_ST_ACCEPT: | ||
| 642 | return 74; | ||
| 643 | case SSL_ST_CONNECT: | ||
| 644 | return 75; | ||
| 645 | case SSL_ST_OK: | ||
| 646 | return 76; | ||
| 647 | case SSL_ST_RENEGOTIATE: | ||
| 648 | return 77; | ||
| 649 | case SSL_ST_BEFORE|SSL_ST_CONNECT: | ||
| 650 | return 78; | ||
| 651 | case SSL_ST_OK|SSL_ST_CONNECT: | ||
| 652 | return 79; | ||
| 653 | case SSL_ST_BEFORE|SSL_ST_ACCEPT: | ||
| 654 | return 80; | ||
| 655 | case SSL_ST_OK|SSL_ST_ACCEPT: | ||
| 656 | return 81; | ||
| 657 | case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: | ||
| 658 | return 83; | ||
| 659 | case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: | ||
| 660 | return 84; | ||
| 661 | case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: | ||
| 662 | return 85; | ||
| 663 | case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: | ||
| 664 | return 86; | ||
| 665 | default: | ||
| 666 | break; | ||
| 667 | } | ||
| 668 | return 0xfff; | ||
| 669 | } | ||
| diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 898fdbc479..7e752ae0d0 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_lib.c,v 1.155 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.156 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -163,7 +163,7 @@ int | |||
| 163 | SSL_clear(SSL *s) | 163 | SSL_clear(SSL *s) | 
| 164 | { | 164 | { | 
| 165 | if (s->method == NULL) { | 165 | if (s->method == NULL) { | 
| 166 | SSLerror(SSL_R_NO_METHOD_SPECIFIED); | 166 | SSLerror(s, SSL_R_NO_METHOD_SPECIFIED); | 
| 167 | return (0); | 167 | return (0); | 
| 168 | } | 168 | } | 
| 169 | 169 | ||
| @@ -177,7 +177,7 @@ SSL_clear(SSL *s) | |||
| 177 | s->internal->shutdown = 0; | 177 | s->internal->shutdown = 0; | 
| 178 | 178 | ||
| 179 | if (s->internal->renegotiate) { | 179 | if (s->internal->renegotiate) { | 
| 180 | SSLerror(ERR_R_INTERNAL_ERROR); | 180 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 181 | return (0); | 181 | return (0); | 
| 182 | } | 182 | } | 
| 183 | 183 | ||
| @@ -226,7 +226,7 @@ SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth) | |||
| 226 | sk = ssl_create_cipher_list(ctx->method, &(ctx->cipher_list), | 226 | sk = ssl_create_cipher_list(ctx->method, &(ctx->cipher_list), | 
| 227 | &(ctx->internal->cipher_list_by_id), SSL_DEFAULT_CIPHER_LIST); | 227 | &(ctx->internal->cipher_list_by_id), SSL_DEFAULT_CIPHER_LIST); | 
| 228 | if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0)) { | 228 | if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0)) { | 
| 229 | SSLerror(SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS); | 229 | SSLerrorx(SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS); | 
| 230 | return (0); | 230 | return (0); | 
| 231 | } | 231 | } | 
| 232 | return (1); | 232 | return (1); | 
| @@ -238,21 +238,21 @@ SSL_new(SSL_CTX *ctx) | |||
| 238 | SSL *s; | 238 | SSL *s; | 
| 239 | 239 | ||
| 240 | if (ctx == NULL) { | 240 | if (ctx == NULL) { | 
| 241 | SSLerror(SSL_R_NULL_SSL_CTX); | 241 | SSLerrorx(SSL_R_NULL_SSL_CTX); | 
| 242 | return (NULL); | 242 | return (NULL); | 
| 243 | } | 243 | } | 
| 244 | if (ctx->method == NULL) { | 244 | if (ctx->method == NULL) { | 
| 245 | SSLerror(SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION); | 245 | SSLerrorx(SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION); | 
| 246 | return (NULL); | 246 | return (NULL); | 
| 247 | } | 247 | } | 
| 248 | 248 | ||
| 249 | if ((s = calloc(1, sizeof(*s))) == NULL) { | 249 | if ((s = calloc(1, sizeof(*s))) == NULL) { | 
| 250 | SSLerror(ERR_R_MALLOC_FAILURE); | 250 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 251 | return (NULL); | 251 | return (NULL); | 
| 252 | } | 252 | } | 
| 253 | if ((s->internal = calloc(1, sizeof(*s->internal))) == NULL) { | 253 | if ((s->internal = calloc(1, sizeof(*s->internal))) == NULL) { | 
| 254 | free(s); | 254 | free(s); | 
| 255 | SSLerror(ERR_R_MALLOC_FAILURE); | 255 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 256 | return (NULL); | 256 | return (NULL); | 
| 257 | } | 257 | } | 
| 258 | 258 | ||
| @@ -371,7 +371,7 @@ SSL_new(SSL_CTX *ctx) | |||
| 371 | 371 | ||
| 372 | err: | 372 | err: | 
| 373 | SSL_free(s); | 373 | SSL_free(s); | 
| 374 | SSLerror(ERR_R_MALLOC_FAILURE); | 374 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 375 | return (NULL); | 375 | return (NULL); | 
| 376 | } | 376 | } | 
| 377 | 377 | ||
| @@ -380,7 +380,7 @@ SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, | |||
| 380 | unsigned int sid_ctx_len) | 380 | unsigned int sid_ctx_len) | 
| 381 | { | 381 | { | 
| 382 | if (sid_ctx_len > sizeof ctx->sid_ctx) { | 382 | if (sid_ctx_len > sizeof ctx->sid_ctx) { | 
| 383 | SSLerror(SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); | 383 | SSLerrorx(SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); | 
| 384 | return (0); | 384 | return (0); | 
| 385 | } | 385 | } | 
| 386 | ctx->sid_ctx_length = sid_ctx_len; | 386 | ctx->sid_ctx_length = sid_ctx_len; | 
| @@ -394,7 +394,7 @@ SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, | |||
| 394 | unsigned int sid_ctx_len) | 394 | unsigned int sid_ctx_len) | 
| 395 | { | 395 | { | 
| 396 | if (sid_ctx_len > SSL_MAX_SID_CTX_LENGTH) { | 396 | if (sid_ctx_len > SSL_MAX_SID_CTX_LENGTH) { | 
| 397 | SSLerror(SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); | 397 | SSLerror(ssl, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); | 
| 398 | return (0); | 398 | return (0); | 
| 399 | } | 399 | } | 
| 400 | ssl->sid_ctx_length = sid_ctx_len; | 400 | ssl->sid_ctx_length = sid_ctx_len; | 
| @@ -631,7 +631,7 @@ SSL_set_fd(SSL *s, int fd) | |||
| 631 | bio = BIO_new(BIO_s_socket()); | 631 | bio = BIO_new(BIO_s_socket()); | 
| 632 | 632 | ||
| 633 | if (bio == NULL) { | 633 | if (bio == NULL) { | 
| 634 | SSLerror(ERR_R_BUF_LIB); | 634 | SSLerror(s, ERR_R_BUF_LIB); | 
| 635 | goto err; | 635 | goto err; | 
| 636 | } | 636 | } | 
| 637 | BIO_set_fd(bio, fd, BIO_NOCLOSE); | 637 | BIO_set_fd(bio, fd, BIO_NOCLOSE); | 
| @@ -652,7 +652,7 @@ SSL_set_wfd(SSL *s, int fd) | |||
| 652 | bio = BIO_new(BIO_s_socket()); | 652 | bio = BIO_new(BIO_s_socket()); | 
| 653 | 653 | ||
| 654 | if (bio == NULL) { | 654 | if (bio == NULL) { | 
| 655 | SSLerror(ERR_R_BUF_LIB); | 655 | SSLerror(s, ERR_R_BUF_LIB); | 
| 656 | goto err; | 656 | goto err; | 
| 657 | } | 657 | } | 
| 658 | BIO_set_fd(bio, fd, BIO_NOCLOSE); | 658 | BIO_set_fd(bio, fd, BIO_NOCLOSE); | 
| @@ -675,7 +675,7 @@ SSL_set_rfd(SSL *s, int fd) | |||
| 675 | bio = BIO_new(BIO_s_socket()); | 675 | bio = BIO_new(BIO_s_socket()); | 
| 676 | 676 | ||
| 677 | if (bio == NULL) { | 677 | if (bio == NULL) { | 
| 678 | SSLerror(ERR_R_BUF_LIB); | 678 | SSLerror(s, ERR_R_BUF_LIB); | 
| 679 | goto err; | 679 | goto err; | 
| 680 | } | 680 | } | 
| 681 | BIO_set_fd(bio, fd, BIO_NOCLOSE); | 681 | BIO_set_fd(bio, fd, BIO_NOCLOSE); | 
| @@ -870,11 +870,11 @@ SSL_CTX_check_private_key(const SSL_CTX *ctx) | |||
| 870 | { | 870 | { | 
| 871 | if ((ctx == NULL) || (ctx->internal->cert == NULL) || | 871 | if ((ctx == NULL) || (ctx->internal->cert == NULL) || | 
| 872 | (ctx->internal->cert->key->x509 == NULL)) { | 872 | (ctx->internal->cert->key->x509 == NULL)) { | 
| 873 | SSLerror(SSL_R_NO_CERTIFICATE_ASSIGNED); | 873 | SSLerrorx(SSL_R_NO_CERTIFICATE_ASSIGNED); | 
| 874 | return (0); | 874 | return (0); | 
| 875 | } | 875 | } | 
| 876 | if (ctx->internal->cert->key->privatekey == NULL) { | 876 | if (ctx->internal->cert->key->privatekey == NULL) { | 
| 877 | SSLerror(SSL_R_NO_PRIVATE_KEY_ASSIGNED); | 877 | SSLerrorx(SSL_R_NO_PRIVATE_KEY_ASSIGNED); | 
| 878 | return (0); | 878 | return (0); | 
| 879 | } | 879 | } | 
| 880 | return (X509_check_private_key(ctx->internal->cert->key->x509, | 880 | return (X509_check_private_key(ctx->internal->cert->key->x509, | 
| @@ -886,19 +886,19 @@ int | |||
| 886 | SSL_check_private_key(const SSL *ssl) | 886 | SSL_check_private_key(const SSL *ssl) | 
| 887 | { | 887 | { | 
| 888 | if (ssl == NULL) { | 888 | if (ssl == NULL) { | 
| 889 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 889 | SSLerror(ssl, ERR_R_PASSED_NULL_PARAMETER); | 
| 890 | return (0); | 890 | return (0); | 
| 891 | } | 891 | } | 
| 892 | if (ssl->cert == NULL) { | 892 | if (ssl->cert == NULL) { | 
| 893 | SSLerror(SSL_R_NO_CERTIFICATE_ASSIGNED); | 893 | SSLerror(ssl, SSL_R_NO_CERTIFICATE_ASSIGNED); | 
| 894 | return (0); | 894 | return (0); | 
| 895 | } | 895 | } | 
| 896 | if (ssl->cert->key->x509 == NULL) { | 896 | if (ssl->cert->key->x509 == NULL) { | 
| 897 | SSLerror(SSL_R_NO_CERTIFICATE_ASSIGNED); | 897 | SSLerror(ssl, SSL_R_NO_CERTIFICATE_ASSIGNED); | 
| 898 | return (0); | 898 | return (0); | 
| 899 | } | 899 | } | 
| 900 | if (ssl->cert->key->privatekey == NULL) { | 900 | if (ssl->cert->key->privatekey == NULL) { | 
| 901 | SSLerror(SSL_R_NO_PRIVATE_KEY_ASSIGNED); | 901 | SSLerror(ssl, SSL_R_NO_PRIVATE_KEY_ASSIGNED); | 
| 902 | return (0); | 902 | return (0); | 
| 903 | } | 903 | } | 
| 904 | return (X509_check_private_key(ssl->cert->key->x509, | 904 | return (X509_check_private_key(ssl->cert->key->x509, | 
| @@ -933,7 +933,7 @@ int | |||
| 933 | SSL_read(SSL *s, void *buf, int num) | 933 | SSL_read(SSL *s, void *buf, int num) | 
| 934 | { | 934 | { | 
| 935 | if (s->internal->handshake_func == NULL) { | 935 | if (s->internal->handshake_func == NULL) { | 
| 936 | SSLerror(SSL_R_UNINITIALIZED); | 936 | SSLerror(s, SSL_R_UNINITIALIZED); | 
| 937 | return (-1); | 937 | return (-1); | 
| 938 | } | 938 | } | 
| 939 | 939 | ||
| @@ -948,7 +948,7 @@ int | |||
| 948 | SSL_peek(SSL *s, void *buf, int num) | 948 | SSL_peek(SSL *s, void *buf, int num) | 
| 949 | { | 949 | { | 
| 950 | if (s->internal->handshake_func == NULL) { | 950 | if (s->internal->handshake_func == NULL) { | 
| 951 | SSLerror(SSL_R_UNINITIALIZED); | 951 | SSLerror(s, SSL_R_UNINITIALIZED); | 
| 952 | return (-1); | 952 | return (-1); | 
| 953 | } | 953 | } | 
| 954 | 954 | ||
| @@ -962,13 +962,13 @@ int | |||
| 962 | SSL_write(SSL *s, const void *buf, int num) | 962 | SSL_write(SSL *s, const void *buf, int num) | 
| 963 | { | 963 | { | 
| 964 | if (s->internal->handshake_func == NULL) { | 964 | if (s->internal->handshake_func == NULL) { | 
| 965 | SSLerror(SSL_R_UNINITIALIZED); | 965 | SSLerror(s, SSL_R_UNINITIALIZED); | 
| 966 | return (-1); | 966 | return (-1); | 
| 967 | } | 967 | } | 
| 968 | 968 | ||
| 969 | if (s->internal->shutdown & SSL_SENT_SHUTDOWN) { | 969 | if (s->internal->shutdown & SSL_SENT_SHUTDOWN) { | 
| 970 | s->internal->rwstate = SSL_NOTHING; | 970 | s->internal->rwstate = SSL_NOTHING; | 
| 971 | SSLerror(SSL_R_PROTOCOL_IS_SHUTDOWN); | 971 | SSLerror(s, SSL_R_PROTOCOL_IS_SHUTDOWN); | 
| 972 | return (-1); | 972 | return (-1); | 
| 973 | } | 973 | } | 
| 974 | return (s->method->internal->ssl_write(s, buf, num)); | 974 | return (s->method->internal->ssl_write(s, buf, num)); | 
| @@ -985,7 +985,7 @@ SSL_shutdown(SSL *s) | |||
| 985 | */ | 985 | */ | 
| 986 | 986 | ||
| 987 | if (s->internal->handshake_func == NULL) { | 987 | if (s->internal->handshake_func == NULL) { | 
| 988 | SSLerror(SSL_R_UNINITIALIZED); | 988 | SSLerror(s, SSL_R_UNINITIALIZED); | 
| 989 | return (-1); | 989 | return (-1); | 
| 990 | } | 990 | } | 
| 991 | 991 | ||
| @@ -1297,7 +1297,7 @@ SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str) | |||
| 1297 | if (sk == NULL) | 1297 | if (sk == NULL) | 
| 1298 | return (0); | 1298 | return (0); | 
| 1299 | else if (sk_SSL_CIPHER_num(sk) == 0) { | 1299 | else if (sk_SSL_CIPHER_num(sk) == 0) { | 
| 1300 | SSLerror(SSL_R_NO_CIPHER_MATCH); | 1300 | SSLerrorx(SSL_R_NO_CIPHER_MATCH); | 
| 1301 | return (0); | 1301 | return (0); | 
| 1302 | } | 1302 | } | 
| 1303 | return (1); | 1303 | return (1); | 
| @@ -1315,7 +1315,7 @@ SSL_set_cipher_list(SSL *s, const char *str) | |||
| 1315 | if (sk == NULL) | 1315 | if (sk == NULL) | 
| 1316 | return (0); | 1316 | return (0); | 
| 1317 | else if (sk_SSL_CIPHER_num(sk) == 0) { | 1317 | else if (sk_SSL_CIPHER_num(sk) == 0) { | 
| 1318 | SSLerror(SSL_R_NO_CIPHER_MATCH); | 1318 | SSLerror(s, SSL_R_NO_CIPHER_MATCH); | 
| 1319 | return (0); | 1319 | return (0); | 
| 1320 | } | 1320 | } | 
| 1321 | return (1); | 1321 | return (1); | 
| @@ -1419,19 +1419,19 @@ ssl_bytes_to_cipher_list(SSL *s, const unsigned char *p, int num) | |||
| 1419 | * RFC 5246 section 7.4.1.2 defines the interval as [2,2^16-2]. | 1419 | * RFC 5246 section 7.4.1.2 defines the interval as [2,2^16-2]. | 
| 1420 | */ | 1420 | */ | 
| 1421 | if (num < 2 || num > 0x10000 - 2) { | 1421 | if (num < 2 || num > 0x10000 - 2) { | 
| 1422 | SSLerror(SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST); | 1422 | SSLerror(s, SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST); | 
| 1423 | return (NULL); | 1423 | return (NULL); | 
| 1424 | } | 1424 | } | 
| 1425 | 1425 | ||
| 1426 | if ((sk = sk_SSL_CIPHER_new_null()) == NULL) { | 1426 | if ((sk = sk_SSL_CIPHER_new_null()) == NULL) { | 
| 1427 | SSLerror(ERR_R_MALLOC_FAILURE); | 1427 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1428 | goto err; | 1428 | goto err; | 
| 1429 | } | 1429 | } | 
| 1430 | 1430 | ||
| 1431 | CBS_init(&cbs, p, num); | 1431 | CBS_init(&cbs, p, num); | 
| 1432 | while (CBS_len(&cbs) > 0) { | 1432 | while (CBS_len(&cbs) > 0) { | 
| 1433 | if (!CBS_get_u16(&cbs, &cipher_value)) { | 1433 | if (!CBS_get_u16(&cbs, &cipher_value)) { | 
| 1434 | SSLerror(SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST); | 1434 | SSLerror(s, SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST); | 
| 1435 | goto err; | 1435 | goto err; | 
| 1436 | } | 1436 | } | 
| 1437 | 1437 | ||
| @@ -1443,7 +1443,7 @@ ssl_bytes_to_cipher_list(SSL *s, const unsigned char *p, int num) | |||
| 1443 | * renegotiating. | 1443 | * renegotiating. | 
| 1444 | */ | 1444 | */ | 
| 1445 | if (s->internal->renegotiate) { | 1445 | if (s->internal->renegotiate) { | 
| 1446 | SSLerror(SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING); | 1446 | SSLerror(s, SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING); | 
| 1447 | ssl3_send_alert(s, SSL3_AL_FATAL, | 1447 | ssl3_send_alert(s, SSL3_AL_FATAL, | 
| 1448 | SSL_AD_HANDSHAKE_FAILURE); | 1448 | SSL_AD_HANDSHAKE_FAILURE); | 
| 1449 | 1449 | ||
| @@ -1462,7 +1462,7 @@ ssl_bytes_to_cipher_list(SSL *s, const unsigned char *p, int num) | |||
| 1462 | */ | 1462 | */ | 
| 1463 | max_version = ssl_max_server_version(s); | 1463 | max_version = ssl_max_server_version(s); | 
| 1464 | if (max_version == 0 || s->version < max_version) { | 1464 | if (max_version == 0 || s->version < max_version) { | 
| 1465 | SSLerror(SSL_R_INAPPROPRIATE_FALLBACK); | 1465 | SSLerror(s, SSL_R_INAPPROPRIATE_FALLBACK); | 
| 1466 | if (s->s3 != NULL) | 1466 | if (s->s3 != NULL) | 
| 1467 | ssl3_send_alert(s, SSL3_AL_FATAL, | 1467 | ssl3_send_alert(s, SSL3_AL_FATAL, | 
| 1468 | SSL_AD_INAPPROPRIATE_FALLBACK); | 1468 | SSL_AD_INAPPROPRIATE_FALLBACK); | 
| @@ -1473,7 +1473,7 @@ ssl_bytes_to_cipher_list(SSL *s, const unsigned char *p, int num) | |||
| 1473 | 1473 | ||
| 1474 | if ((c = ssl3_get_cipher_by_value(cipher_value)) != NULL) { | 1474 | if ((c = ssl3_get_cipher_by_value(cipher_value)) != NULL) { | 
| 1475 | if (!sk_SSL_CIPHER_push(sk, c)) { | 1475 | if (!sk_SSL_CIPHER_push(sk, c)) { | 
| 1476 | SSLerror(ERR_R_MALLOC_FAILURE); | 1476 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1477 | goto err; | 1477 | goto err; | 
| 1478 | } | 1478 | } | 
| 1479 | } | 1479 | } | 
| @@ -1783,22 +1783,22 @@ SSL_CTX_new(const SSL_METHOD *meth) | |||
| 1783 | SSL_CTX *ret; | 1783 | SSL_CTX *ret; | 
| 1784 | 1784 | ||
| 1785 | if (meth == NULL) { | 1785 | if (meth == NULL) { | 
| 1786 | SSLerror(SSL_R_NULL_SSL_METHOD_PASSED); | 1786 | SSLerrorx(SSL_R_NULL_SSL_METHOD_PASSED); | 
| 1787 | return (NULL); | 1787 | return (NULL); | 
| 1788 | } | 1788 | } | 
| 1789 | 1789 | ||
| 1790 | if ((ret = calloc(1, sizeof(*ret))) == NULL) { | 1790 | if ((ret = calloc(1, sizeof(*ret))) == NULL) { | 
| 1791 | SSLerror(ERR_R_MALLOC_FAILURE); | 1791 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 1792 | return (NULL); | 1792 | return (NULL); | 
| 1793 | } | 1793 | } | 
| 1794 | if ((ret->internal = calloc(1, sizeof(*ret->internal))) == NULL) { | 1794 | if ((ret->internal = calloc(1, sizeof(*ret->internal))) == NULL) { | 
| 1795 | free(ret); | 1795 | free(ret); | 
| 1796 | SSLerror(ERR_R_MALLOC_FAILURE); | 1796 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 1797 | return (NULL); | 1797 | return (NULL); | 
| 1798 | } | 1798 | } | 
| 1799 | 1799 | ||
| 1800 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { | 1800 | if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) { | 
| 1801 | SSLerror(SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); | 1801 | SSLerrorx(SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); | 
| 1802 | goto err; | 1802 | goto err; | 
| 1803 | } | 1803 | } | 
| 1804 | 1804 | ||
| @@ -1857,7 +1857,7 @@ SSL_CTX_new(const SSL_METHOD *meth) | |||
| 1857 | &ret->internal->cipher_list_by_id, SSL_DEFAULT_CIPHER_LIST); | 1857 | &ret->internal->cipher_list_by_id, SSL_DEFAULT_CIPHER_LIST); | 
| 1858 | if (ret->cipher_list == NULL || | 1858 | if (ret->cipher_list == NULL || | 
| 1859 | sk_SSL_CIPHER_num(ret->cipher_list) <= 0) { | 1859 | sk_SSL_CIPHER_num(ret->cipher_list) <= 0) { | 
| 1860 | SSLerror(SSL_R_LIBRARY_HAS_NO_CIPHERS); | 1860 | SSLerrorx(SSL_R_LIBRARY_HAS_NO_CIPHERS); | 
| 1861 | goto err2; | 1861 | goto err2; | 
| 1862 | } | 1862 | } | 
| 1863 | 1863 | ||
| @@ -1866,11 +1866,11 @@ SSL_CTX_new(const SSL_METHOD *meth) | |||
| 1866 | goto err; | 1866 | goto err; | 
| 1867 | 1867 | ||
| 1868 | if ((ret->internal->md5 = EVP_get_digestbyname("ssl3-md5")) == NULL) { | 1868 | if ((ret->internal->md5 = EVP_get_digestbyname("ssl3-md5")) == NULL) { | 
| 1869 | SSLerror(SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES); | 1869 | SSLerrorx(SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES); | 
| 1870 | goto err2; | 1870 | goto err2; | 
| 1871 | } | 1871 | } | 
| 1872 | if ((ret->internal->sha1 = EVP_get_digestbyname("ssl3-sha1")) == NULL) { | 1872 | if ((ret->internal->sha1 = EVP_get_digestbyname("ssl3-sha1")) == NULL) { | 
| 1873 | SSLerror(SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES); | 1873 | SSLerrorx(SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES); | 
| 1874 | goto err2; | 1874 | goto err2; | 
| 1875 | } | 1875 | } | 
| 1876 | 1876 | ||
| @@ -1925,7 +1925,7 @@ SSL_CTX_new(const SSL_METHOD *meth) | |||
| 1925 | 1925 | ||
| 1926 | return (ret); | 1926 | return (ret); | 
| 1927 | err: | 1927 | err: | 
| 1928 | SSLerror(ERR_R_MALLOC_FAILURE); | 1928 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 1929 | err2: | 1929 | err2: | 
| 1930 | SSL_CTX_free(ret); | 1930 | SSL_CTX_free(ret); | 
| 1931 | return (NULL); | 1931 | return (NULL); | 
| @@ -2109,7 +2109,7 @@ ssl_check_srvr_ecc_cert_and_alg(X509 *x, SSL *s) | |||
| 2109 | /* Key usage, if present, must allow signing. */ | 2109 | /* Key usage, if present, must allow signing. */ | 
| 2110 | if ((x->ex_flags & EXFLAG_KUSAGE) && | 2110 | if ((x->ex_flags & EXFLAG_KUSAGE) && | 
| 2111 | ((x->ex_kusage & X509v3_KU_DIGITAL_SIGNATURE) == 0)) { | 2111 | ((x->ex_kusage & X509v3_KU_DIGITAL_SIGNATURE) == 0)) { | 
| 2112 | SSLerror(SSL_R_ECC_CERT_NOT_FOR_SIGNING); | 2112 | SSLerror(s, SSL_R_ECC_CERT_NOT_FOR_SIGNING); | 
| 2113 | return (0); | 2113 | return (0); | 
| 2114 | } | 2114 | } | 
| 2115 | } | 2115 | } | 
| @@ -2141,7 +2141,7 @@ ssl_get_server_send_pkey(const SSL *s) | |||
| 2141 | } else if (alg_a & SSL_aGOST01) { | 2141 | } else if (alg_a & SSL_aGOST01) { | 
| 2142 | i = SSL_PKEY_GOST01; | 2142 | i = SSL_PKEY_GOST01; | 
| 2143 | } else { /* if (alg_a & SSL_aNULL) */ | 2143 | } else { /* if (alg_a & SSL_aNULL) */ | 
| 2144 | SSLerror(ERR_R_INTERNAL_ERROR); | 2144 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2145 | return (NULL); | 2145 | return (NULL); | 
| 2146 | } | 2146 | } | 
| 2147 | 2147 | ||
| @@ -2181,7 +2181,7 @@ ssl_get_sign_pkey(SSL *s, const SSL_CIPHER *cipher, const EVP_MD **pmd) | |||
| 2181 | (c->pkeys[SSL_PKEY_ECC].privatekey != NULL)) | 2181 | (c->pkeys[SSL_PKEY_ECC].privatekey != NULL)) | 
| 2182 | idx = SSL_PKEY_ECC; | 2182 | idx = SSL_PKEY_ECC; | 
| 2183 | if (idx == -1) { | 2183 | if (idx == -1) { | 
| 2184 | SSLerror(ERR_R_INTERNAL_ERROR); | 2184 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2185 | return (NULL); | 2185 | return (NULL); | 
| 2186 | } | 2186 | } | 
| 2187 | if (pmd) | 2187 | if (pmd) | 
| @@ -2385,7 +2385,7 @@ SSL_do_handshake(SSL *s) | |||
| 2385 | int ret = 1; | 2385 | int ret = 1; | 
| 2386 | 2386 | ||
| 2387 | if (s->internal->handshake_func == NULL) { | 2387 | if (s->internal->handshake_func == NULL) { | 
| 2388 | SSLerror(SSL_R_CONNECTION_TYPE_NOT_SET); | 2388 | SSLerror(s, SSL_R_CONNECTION_TYPE_NOT_SET); | 
| 2389 | return (-1); | 2389 | return (-1); | 
| 2390 | } | 2390 | } | 
| 2391 | 2391 | ||
| @@ -2430,21 +2430,21 @@ SSL_set_connect_state(SSL *s) | |||
| 2430 | int | 2430 | int | 
| 2431 | ssl_undefined_function(SSL *s) | 2431 | ssl_undefined_function(SSL *s) | 
| 2432 | { | 2432 | { | 
| 2433 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2433 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2434 | return (0); | 2434 | return (0); | 
| 2435 | } | 2435 | } | 
| 2436 | 2436 | ||
| 2437 | int | 2437 | int | 
| 2438 | ssl_undefined_void_function(void) | 2438 | ssl_undefined_void_function(void) | 
| 2439 | { | 2439 | { | 
| 2440 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2440 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2441 | return (0); | 2441 | return (0); | 
| 2442 | } | 2442 | } | 
| 2443 | 2443 | ||
| 2444 | int | 2444 | int | 
| 2445 | ssl_undefined_const_function(const SSL *s) | 2445 | ssl_undefined_const_function(const SSL *s) | 
| 2446 | { | 2446 | { | 
| 2447 | SSLerror(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2447 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 
| 2448 | return (0); | 2448 | return (0); | 
| 2449 | } | 2449 | } | 
| 2450 | 2450 | ||
| @@ -2679,7 +2679,7 @@ ssl_init_wbio_buffer(SSL *s, int push) | |||
| 2679 | (void)BIO_reset(bbio); | 2679 | (void)BIO_reset(bbio); | 
| 2680 | /* if (!BIO_set_write_buffer_size(bbio,16*1024)) */ | 2680 | /* if (!BIO_set_write_buffer_size(bbio,16*1024)) */ | 
| 2681 | if (!BIO_set_read_buffer_size(bbio, 1)) { | 2681 | if (!BIO_set_read_buffer_size(bbio, 1)) { | 
| 2682 | SSLerror(ERR_R_BUF_LIB); | 2682 | SSLerror(s, ERR_R_BUF_LIB); | 
| 2683 | return (0); | 2683 | return (0); | 
| 2684 | } | 2684 | } | 
| 2685 | if (push) { | 2685 | if (push) { | 
| diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 1ce9350ba6..a64edd2c18 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_locl.h,v 1.172 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: ssl_locl.h,v 1.173 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -1367,8 +1367,11 @@ int ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char *md_out, | |||
| 1367 | const unsigned char *data, size_t data_plus_mac_size, | 1367 | const unsigned char *data, size_t data_plus_mac_size, | 
| 1368 | size_t data_plus_mac_plus_padding_size, const unsigned char *mac_secret, | 1368 | size_t data_plus_mac_plus_padding_size, const unsigned char *mac_secret, | 
| 1369 | unsigned mac_secret_length); | 1369 | unsigned mac_secret_length); | 
| 1370 | int SSL_state_func_code(int _state); | ||
| 1370 | 1371 | ||
| 1371 | #define SSLerror(r) ERR_PUT_error(ERR_LIB_SSL,(0xfff),(r),__FILE__,__LINE__) | 1372 | #define SSLerror(s, r) ERR_PUT_error(ERR_LIB_SSL, \ | 
| 1373 | (SSL_state_func_code(s->internal->state)),(r),__FILE__,__LINE__) | ||
| 1374 | #define SSLerrorx(r) ERR_PUT_error(ERR_LIB_SSL,(0xfff),(r),__FILE__,__LINE__) | ||
| 1372 | 1375 | ||
| 1373 | __END_HIDDEN_DECLS | 1376 | __END_HIDDEN_DECLS | 
| 1374 | 1377 | ||
| diff --git a/src/lib/libssl/ssl_packet.c b/src/lib/libssl/ssl_packet.c index 9ffc27e9a7..d5d5996735 100644 --- a/src/lib/libssl/ssl_packet.c +++ b/src/lib/libssl/ssl_packet.c | |||
| @@ -106,11 +106,11 @@ ssl_convert_sslv2_client_hello(SSL *s) | |||
| 106 | return -1; | 106 | return -1; | 
| 107 | 107 | ||
| 108 | if (record_length < 9) { | 108 | if (record_length < 9) { | 
| 109 | SSLerror(SSL_R_RECORD_LENGTH_MISMATCH); | 109 | SSLerror(s, SSL_R_RECORD_LENGTH_MISMATCH); | 
| 110 | return -1; | 110 | return -1; | 
| 111 | } | 111 | } | 
| 112 | if (record_length > 4096) { | 112 | if (record_length > 4096) { | 
| 113 | SSLerror(SSL_R_RECORD_TOO_LARGE); | 113 | SSLerror(s, SSL_R_RECORD_TOO_LARGE); | 
| 114 | return -1; | 114 | return -1; | 
| 115 | } | 115 | } | 
| 116 | 116 | ||
| @@ -149,7 +149,7 @@ ssl_convert_sslv2_client_hello(SSL *s) | |||
| 149 | if (!CBS_get_bytes(&cbs, &challenge, challenge_length)) | 149 | if (!CBS_get_bytes(&cbs, &challenge, challenge_length)) | 
| 150 | return -1; | 150 | return -1; | 
| 151 | if (CBS_len(&cbs) != 0) { | 151 | if (CBS_len(&cbs) != 0) { | 
| 152 | SSLerror(SSL_R_RECORD_LENGTH_MISMATCH); | 152 | SSLerror(s, SSL_R_RECORD_LENGTH_MISMATCH); | 
| 153 | return -1; | 153 | return -1; | 
| 154 | } | 154 | } | 
| 155 | 155 | ||
| @@ -234,14 +234,14 @@ ssl_server_legacy_first_packet(SSL *s) | |||
| 234 | if (ssl_is_sslv2_client_hello(&header) == 1) { | 234 | if (ssl_is_sslv2_client_hello(&header) == 1) { | 
| 235 | /* Only permit SSLv2 client hellos if TLSv1.0 is enabled. */ | 235 | /* Only permit SSLv2 client hellos if TLSv1.0 is enabled. */ | 
| 236 | if (ssl_enabled_version_range(s, &min_version, NULL) != 1) { | 236 | if (ssl_enabled_version_range(s, &min_version, NULL) != 1) { | 
| 237 | SSLerror(SSL_R_NO_PROTOCOLS_AVAILABLE); | 237 | SSLerror(s, SSL_R_NO_PROTOCOLS_AVAILABLE); | 
| 238 | return -1; | 238 | return -1; | 
| 239 | } | 239 | } | 
| 240 | if (min_version > TLS1_VERSION) | 240 | if (min_version > TLS1_VERSION) | 
| 241 | return 1; | 241 | return 1; | 
| 242 | 242 | ||
| 243 | if (ssl_convert_sslv2_client_hello(s) != 1) { | 243 | if (ssl_convert_sslv2_client_hello(s) != 1) { | 
| 244 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 244 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 245 | return -1; | 245 | return -1; | 
| 246 | } | 246 | } | 
| 247 | 247 | ||
| @@ -250,7 +250,7 @@ ssl_server_legacy_first_packet(SSL *s) | |||
| 250 | 250 | ||
| 251 | /* Ensure that we have SSL3_RT_HEADER_LENGTH (5 bytes) of the packet. */ | 251 | /* Ensure that we have SSL3_RT_HEADER_LENGTH (5 bytes) of the packet. */ | 
| 252 | if (CBS_len(&header) != SSL3_RT_HEADER_LENGTH) { | 252 | if (CBS_len(&header) != SSL3_RT_HEADER_LENGTH) { | 
| 253 | SSLerror(ERR_R_INTERNAL_ERROR); | 253 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 254 | return -1; | 254 | return -1; | 
| 255 | } | 255 | } | 
| 256 | data = (const char *)CBS_data(&header); | 256 | data = (const char *)CBS_data(&header); | 
| @@ -260,15 +260,15 @@ ssl_server_legacy_first_packet(SSL *s) | |||
| 260 | strncmp("POST ", data, 5) == 0 || | 260 | strncmp("POST ", data, 5) == 0 || | 
| 261 | strncmp("HEAD ", data, 5) == 0 || | 261 | strncmp("HEAD ", data, 5) == 0 || | 
| 262 | strncmp("PUT ", data, 4) == 0) { | 262 | strncmp("PUT ", data, 4) == 0) { | 
| 263 | SSLerror(SSL_R_HTTP_REQUEST); | 263 | SSLerror(s, SSL_R_HTTP_REQUEST); | 
| 264 | return -1; | 264 | return -1; | 
| 265 | } | 265 | } | 
| 266 | if (strncmp("CONNE", data, 5) == 0) { | 266 | if (strncmp("CONNE", data, 5) == 0) { | 
| 267 | SSLerror(SSL_R_HTTPS_PROXY_REQUEST); | 267 | SSLerror(s, SSL_R_HTTPS_PROXY_REQUEST); | 
| 268 | return -1; | 268 | return -1; | 
| 269 | } | 269 | } | 
| 270 | 270 | ||
| 271 | SSLerror(SSL_R_UNKNOWN_PROTOCOL); | 271 | SSLerror(s, SSL_R_UNKNOWN_PROTOCOL); | 
| 272 | 272 | ||
| 273 | return -1; | 273 | return -1; | 
| 274 | } | 274 | } | 
| diff --git a/src/lib/libssl/ssl_pkt.c b/src/lib/libssl/ssl_pkt.c index c57eacd770..f49cc45efd 100644 --- a/src/lib/libssl/ssl_pkt.c +++ b/src/lib/libssl/ssl_pkt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_pkt.c,v 1.9 2017/01/31 15:35:46 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_pkt.c,v 1.10 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -224,7 +224,7 @@ ssl3_read_n(SSL *s, int n, int max, int extend) | |||
| 224 | 224 | ||
| 225 | if (n > (int)(rb->len - rb->offset)) { | 225 | if (n > (int)(rb->len - rb->offset)) { | 
| 226 | /* does not happen */ | 226 | /* does not happen */ | 
| 227 | SSLerror(ERR_R_INTERNAL_ERROR); | 227 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 228 | return -1; | 228 | return -1; | 
| 229 | } | 229 | } | 
| 230 | 230 | ||
| @@ -248,7 +248,7 @@ ssl3_read_n(SSL *s, int n, int max, int extend) | |||
| 248 | s->internal->rwstate = SSL_READING; | 248 | s->internal->rwstate = SSL_READING; | 
| 249 | i = BIO_read(s->rbio, pkt + len + left, max - left); | 249 | i = BIO_read(s->rbio, pkt + len + left, max - left); | 
| 250 | } else { | 250 | } else { | 
| 251 | SSLerror(SSL_R_READ_BIO_NOT_SET); | 251 | SSLerror(s, SSL_R_READ_BIO_NOT_SET); | 
| 252 | i = -1; | 252 | i = -1; | 
| 253 | } | 253 | } | 
| 254 | 254 | ||
| @@ -364,7 +364,7 @@ ssl3_get_record(SSL *s) | |||
| 364 | if (!CBS_get_u8(&header, &type) || | 364 | if (!CBS_get_u8(&header, &type) || | 
| 365 | !CBS_get_u16(&header, &ssl_version) || | 365 | !CBS_get_u16(&header, &ssl_version) || | 
| 366 | !CBS_get_u16(&header, &len)) { | 366 | !CBS_get_u16(&header, &len)) { | 
| 367 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 367 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 368 | goto err; | 368 | goto err; | 
| 369 | } | 369 | } | 
| 370 | 370 | ||
| @@ -373,7 +373,7 @@ ssl3_get_record(SSL *s) | |||
| 373 | 373 | ||
| 374 | /* Lets check version */ | 374 | /* Lets check version */ | 
| 375 | if (!s->internal->first_packet && ssl_version != s->version) { | 375 | if (!s->internal->first_packet && ssl_version != s->version) { | 
| 376 | SSLerror(SSL_R_WRONG_VERSION_NUMBER); | 376 | SSLerror(s, SSL_R_WRONG_VERSION_NUMBER); | 
| 377 | if ((s->version & 0xFF00) == (ssl_version & 0xFF00) && | 377 | if ((s->version & 0xFF00) == (ssl_version & 0xFF00) && | 
| 378 | !s->internal->enc_write_ctx && !s->internal->write_hash) | 378 | !s->internal->enc_write_ctx && !s->internal->write_hash) | 
| 379 | /* Send back error using their minor version number :-) */ | 379 | /* Send back error using their minor version number :-) */ | 
| @@ -383,13 +383,13 @@ ssl3_get_record(SSL *s) | |||
| 383 | } | 383 | } | 
| 384 | 384 | ||
| 385 | if ((ssl_version >> 8) != SSL3_VERSION_MAJOR) { | 385 | if ((ssl_version >> 8) != SSL3_VERSION_MAJOR) { | 
| 386 | SSLerror(SSL_R_WRONG_VERSION_NUMBER); | 386 | SSLerror(s, SSL_R_WRONG_VERSION_NUMBER); | 
| 387 | goto err; | 387 | goto err; | 
| 388 | } | 388 | } | 
| 389 | 389 | ||
| 390 | if (rr->length > s->s3->rbuf.len - SSL3_RT_HEADER_LENGTH) { | 390 | if (rr->length > s->s3->rbuf.len - SSL3_RT_HEADER_LENGTH) { | 
| 391 | al = SSL_AD_RECORD_OVERFLOW; | 391 | al = SSL_AD_RECORD_OVERFLOW; | 
| 392 | SSLerror(SSL_R_PACKET_LENGTH_TOO_LONG); | 392 | SSLerror(s, SSL_R_PACKET_LENGTH_TOO_LONG); | 
| 393 | goto f_err; | 393 | goto f_err; | 
| 394 | } | 394 | } | 
| 395 | 395 | ||
| @@ -424,7 +424,7 @@ ssl3_get_record(SSL *s) | |||
| 424 | /* check is not needed I believe */ | 424 | /* check is not needed I believe */ | 
| 425 | if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH) { | 425 | if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH) { | 
| 426 | al = SSL_AD_RECORD_OVERFLOW; | 426 | al = SSL_AD_RECORD_OVERFLOW; | 
| 427 | SSLerror(SSL_R_ENCRYPTED_LENGTH_TOO_LONG); | 427 | SSLerror(s, SSL_R_ENCRYPTED_LENGTH_TOO_LONG); | 
| 428 | goto f_err; | 428 | goto f_err; | 
| 429 | } | 429 | } | 
| 430 | 430 | ||
| @@ -438,7 +438,7 @@ ssl3_get_record(SSL *s) | |||
| 438 | * -1: if the padding is invalid */ | 438 | * -1: if the padding is invalid */ | 
| 439 | if (enc_err == 0) { | 439 | if (enc_err == 0) { | 
| 440 | al = SSL_AD_DECRYPTION_FAILED; | 440 | al = SSL_AD_DECRYPTION_FAILED; | 
| 441 | SSLerror(SSL_R_BLOCK_CIPHER_PAD_IS_WRONG); | 441 | SSLerror(s, SSL_R_BLOCK_CIPHER_PAD_IS_WRONG); | 
| 442 | goto f_err; | 442 | goto f_err; | 
| 443 | } | 443 | } | 
| 444 | 444 | ||
| @@ -466,7 +466,7 @@ ssl3_get_record(SSL *s) | |||
| 466 | (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE && | 466 | (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE && | 
| 467 | orig_len < mac_size + 1)) { | 467 | orig_len < mac_size + 1)) { | 
| 468 | al = SSL_AD_DECODE_ERROR; | 468 | al = SSL_AD_DECODE_ERROR; | 
| 469 | SSLerror(SSL_R_LENGTH_TOO_SHORT); | 469 | SSLerror(s, SSL_R_LENGTH_TOO_SHORT); | 
| 470 | goto f_err; | 470 | goto f_err; | 
| 471 | } | 471 | } | 
| 472 | 472 | ||
| @@ -506,13 +506,13 @@ ssl3_get_record(SSL *s) | |||
| 506 | * (e.g. via a logfile) | 506 | * (e.g. via a logfile) | 
| 507 | */ | 507 | */ | 
| 508 | al = SSL_AD_BAD_RECORD_MAC; | 508 | al = SSL_AD_BAD_RECORD_MAC; | 
| 509 | SSLerror(SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC); | 509 | SSLerror(s, SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC); | 
| 510 | goto f_err; | 510 | goto f_err; | 
| 511 | } | 511 | } | 
| 512 | 512 | ||
| 513 | if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH) { | 513 | if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH) { | 
| 514 | al = SSL_AD_RECORD_OVERFLOW; | 514 | al = SSL_AD_RECORD_OVERFLOW; | 
| 515 | SSLerror(SSL_R_DATA_LENGTH_TOO_LONG); | 515 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 
| 516 | goto f_err; | 516 | goto f_err; | 
| 517 | } | 517 | } | 
| 518 | 518 | ||
| @@ -538,7 +538,7 @@ ssl3_get_record(SSL *s) | |||
| 538 | * empty record without forcing want_read. | 538 | * empty record without forcing want_read. | 
| 539 | */ | 539 | */ | 
| 540 | if (s->internal->empty_record_count++ > SSL_MAX_EMPTY_RECORDS) { | 540 | if (s->internal->empty_record_count++ > SSL_MAX_EMPTY_RECORDS) { | 
| 541 | SSLerror(SSL_R_PEER_BEHAVING_BADLY); | 541 | SSLerror(s, SSL_R_PEER_BEHAVING_BADLY); | 
| 542 | return -1; | 542 | return -1; | 
| 543 | } | 543 | } | 
| 544 | if (s->internal->empty_record_count > 1) { | 544 | if (s->internal->empty_record_count > 1) { | 
| @@ -569,7 +569,7 @@ ssl3_write_bytes(SSL *s, int type, const void *buf_, int len) | |||
| 569 | int i; | 569 | int i; | 
| 570 | 570 | ||
| 571 | if (len < 0) { | 571 | if (len < 0) { | 
| 572 | SSLerror(ERR_R_INTERNAL_ERROR); | 572 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 573 | return -1; | 573 | return -1; | 
| 574 | } | 574 | } | 
| 575 | 575 | ||
| @@ -582,7 +582,7 @@ ssl3_write_bytes(SSL *s, int type, const void *buf_, int len) | |||
| 582 | if (i < 0) | 582 | if (i < 0) | 
| 583 | return (i); | 583 | return (i); | 
| 584 | if (i == 0) { | 584 | if (i == 0) { | 
| 585 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 585 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 586 | return -1; | 586 | return -1; | 
| 587 | } | 587 | } | 
| 588 | } | 588 | } | 
| @@ -691,7 +691,7 @@ do_ssl3_write(SSL *s, int type, const unsigned char *buf, | |||
| 691 | if (prefix_len > | 691 | if (prefix_len > | 
| 692 | (SSL3_RT_HEADER_LENGTH + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD)) { | 692 | (SSL3_RT_HEADER_LENGTH + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD)) { | 
| 693 | /* insufficient space */ | 693 | /* insufficient space */ | 
| 694 | SSLerror(ERR_R_INTERNAL_ERROR); | 694 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 695 | goto err; | 695 | goto err; | 
| 696 | } | 696 | } | 
| 697 | } | 697 | } | 
| @@ -834,7 +834,7 @@ ssl3_write_pending(SSL *s, int type, const unsigned char *buf, unsigned int len) | |||
| 834 | if ((S3I(s)->wpend_tot > (int)len) || ((S3I(s)->wpend_buf != buf) && | 834 | if ((S3I(s)->wpend_tot > (int)len) || ((S3I(s)->wpend_buf != buf) && | 
| 835 | !(s->internal->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER)) || | 835 | !(s->internal->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER)) || | 
| 836 | (S3I(s)->wpend_type != type)) { | 836 | (S3I(s)->wpend_type != type)) { | 
| 837 | SSLerror(SSL_R_BAD_WRITE_RETRY); | 837 | SSLerror(s, SSL_R_BAD_WRITE_RETRY); | 
| 838 | return (-1); | 838 | return (-1); | 
| 839 | } | 839 | } | 
| 840 | 840 | ||
| @@ -846,7 +846,7 @@ ssl3_write_pending(SSL *s, int type, const unsigned char *buf, unsigned int len) | |||
| 846 | (char *)&(wb->buf[wb->offset]), | 846 | (char *)&(wb->buf[wb->offset]), | 
| 847 | (unsigned int)wb->left); | 847 | (unsigned int)wb->left); | 
| 848 | } else { | 848 | } else { | 
| 849 | SSLerror(SSL_R_BIO_NOT_SET); | 849 | SSLerror(s, SSL_R_BIO_NOT_SET); | 
| 850 | i = -1; | 850 | i = -1; | 
| 851 | } | 851 | } | 
| 852 | if (i == wb->left) { | 852 | if (i == wb->left) { | 
| @@ -911,14 +911,14 @@ ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
| 911 | return (-1); | 911 | return (-1); | 
| 912 | 912 | ||
| 913 | if (len < 0) { | 913 | if (len < 0) { | 
| 914 | SSLerror(ERR_R_INTERNAL_ERROR); | 914 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 915 | return -1; | 915 | return -1; | 
| 916 | } | 916 | } | 
| 917 | 917 | ||
| 918 | if ((type && type != SSL3_RT_APPLICATION_DATA && | 918 | if ((type && type != SSL3_RT_APPLICATION_DATA && | 
| 919 | type != SSL3_RT_HANDSHAKE) || | 919 | type != SSL3_RT_HANDSHAKE) || | 
| 920 | (peek && (type != SSL3_RT_APPLICATION_DATA))) { | 920 | (peek && (type != SSL3_RT_APPLICATION_DATA))) { | 
| 921 | SSLerror(ERR_R_INTERNAL_ERROR); | 921 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 922 | return -1; | 922 | return -1; | 
| 923 | } | 923 | } | 
| 924 | 924 | ||
| @@ -953,7 +953,7 @@ ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
| 953 | if (i < 0) | 953 | if (i < 0) | 
| 954 | return (i); | 954 | return (i); | 
| 955 | if (i == 0) { | 955 | if (i == 0) { | 
| 956 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 956 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 957 | return (-1); | 957 | return (-1); | 
| 958 | } | 958 | } | 
| 959 | } | 959 | } | 
| @@ -995,7 +995,7 @@ start: | |||
| 995 | * reset by ssl3_get_finished */ | 995 | * reset by ssl3_get_finished */ | 
| 996 | && (rr->type != SSL3_RT_HANDSHAKE)) { | 996 | && (rr->type != SSL3_RT_HANDSHAKE)) { | 
| 997 | al = SSL_AD_UNEXPECTED_MESSAGE; | 997 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 998 | SSLerror(SSL_R_DATA_BETWEEN_CCS_AND_FINISHED); | 998 | SSLerror(s, SSL_R_DATA_BETWEEN_CCS_AND_FINISHED); | 
| 999 | goto f_err; | 999 | goto f_err; | 
| 1000 | } | 1000 | } | 
| 1001 | 1001 | ||
| @@ -1015,7 +1015,7 @@ start: | |||
| 1015 | if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) && | 1015 | if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) && | 
| 1016 | (s->enc_read_ctx == NULL)) { | 1016 | (s->enc_read_ctx == NULL)) { | 
| 1017 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1017 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1018 | SSLerror(SSL_R_APP_DATA_IN_HANDSHAKE); | 1018 | SSLerror(s, SSL_R_APP_DATA_IN_HANDSHAKE); | 
| 1019 | goto f_err; | 1019 | goto f_err; | 
| 1020 | } | 1020 | } | 
| 1021 | 1021 | ||
| @@ -1097,7 +1097,7 @@ start: | |||
| 1097 | (S3I(s)->handshake_fragment[2] != 0) || | 1097 | (S3I(s)->handshake_fragment[2] != 0) || | 
| 1098 | (S3I(s)->handshake_fragment[3] != 0)) { | 1098 | (S3I(s)->handshake_fragment[3] != 0)) { | 
| 1099 | al = SSL_AD_DECODE_ERROR; | 1099 | al = SSL_AD_DECODE_ERROR; | 
| 1100 | SSLerror(SSL_R_BAD_HELLO_REQUEST); | 1100 | SSLerror(s, SSL_R_BAD_HELLO_REQUEST); | 
| 1101 | goto f_err; | 1101 | goto f_err; | 
| 1102 | } | 1102 | } | 
| 1103 | 1103 | ||
| @@ -1115,7 +1115,7 @@ start: | |||
| 1115 | if (i < 0) | 1115 | if (i < 0) | 
| 1116 | return (i); | 1116 | return (i); | 
| 1117 | if (i == 0) { | 1117 | if (i == 0) { | 
| 1118 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 1118 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 1119 | return (-1); | 1119 | return (-1); | 
| 1120 | } | 1120 | } | 
| 1121 | 1121 | ||
| @@ -1196,13 +1196,13 @@ start: | |||
| 1196 | */ | 1196 | */ | 
| 1197 | else if (alert_descr == SSL_AD_NO_RENEGOTIATION) { | 1197 | else if (alert_descr == SSL_AD_NO_RENEGOTIATION) { | 
| 1198 | al = SSL_AD_HANDSHAKE_FAILURE; | 1198 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1199 | SSLerror(SSL_R_NO_RENEGOTIATION); | 1199 | SSLerror(s, SSL_R_NO_RENEGOTIATION); | 
| 1200 | goto f_err; | 1200 | goto f_err; | 
| 1201 | } | 1201 | } | 
| 1202 | } else if (alert_level == SSL3_AL_FATAL) { | 1202 | } else if (alert_level == SSL3_AL_FATAL) { | 
| 1203 | s->internal->rwstate = SSL_NOTHING; | 1203 | s->internal->rwstate = SSL_NOTHING; | 
| 1204 | S3I(s)->fatal_alert = alert_descr; | 1204 | S3I(s)->fatal_alert = alert_descr; | 
| 1205 | SSLerror(SSL_AD_REASON_OFFSET + alert_descr); | 1205 | SSLerror(s, SSL_AD_REASON_OFFSET + alert_descr); | 
| 1206 | ERR_asprintf_error_data("SSL alert number %d", | 1206 | ERR_asprintf_error_data("SSL alert number %d", | 
| 1207 | alert_descr); | 1207 | alert_descr); | 
| 1208 | s->internal->shutdown |= SSL_RECEIVED_SHUTDOWN; | 1208 | s->internal->shutdown |= SSL_RECEIVED_SHUTDOWN; | 
| @@ -1210,7 +1210,7 @@ start: | |||
| 1210 | return (0); | 1210 | return (0); | 
| 1211 | } else { | 1211 | } else { | 
| 1212 | al = SSL_AD_ILLEGAL_PARAMETER; | 1212 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 1213 | SSLerror(SSL_R_UNKNOWN_ALERT_TYPE); | 1213 | SSLerror(s, SSL_R_UNKNOWN_ALERT_TYPE); | 
| 1214 | goto f_err; | 1214 | goto f_err; | 
| 1215 | } | 1215 | } | 
| 1216 | 1216 | ||
| @@ -1230,21 +1230,21 @@ start: | |||
| 1230 | if ((rr->length != 1) || (rr->off != 0) || | 1230 | if ((rr->length != 1) || (rr->off != 0) || | 
| 1231 | (rr->data[0] != SSL3_MT_CCS)) { | 1231 | (rr->data[0] != SSL3_MT_CCS)) { | 
| 1232 | al = SSL_AD_ILLEGAL_PARAMETER; | 1232 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 1233 | SSLerror(SSL_R_BAD_CHANGE_CIPHER_SPEC); | 1233 | SSLerror(s, SSL_R_BAD_CHANGE_CIPHER_SPEC); | 
| 1234 | goto f_err; | 1234 | goto f_err; | 
| 1235 | } | 1235 | } | 
| 1236 | 1236 | ||
| 1237 | /* Check we have a cipher to change to */ | 1237 | /* Check we have a cipher to change to */ | 
| 1238 | if (S3I(s)->tmp.new_cipher == NULL) { | 1238 | if (S3I(s)->tmp.new_cipher == NULL) { | 
| 1239 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1239 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1240 | SSLerror(SSL_R_CCS_RECEIVED_EARLY); | 1240 | SSLerror(s, SSL_R_CCS_RECEIVED_EARLY); | 
| 1241 | goto f_err; | 1241 | goto f_err; | 
| 1242 | } | 1242 | } | 
| 1243 | 1243 | ||
| 1244 | /* Check that we should be receiving a Change Cipher Spec. */ | 1244 | /* Check that we should be receiving a Change Cipher Spec. */ | 
| 1245 | if (!(s->s3->flags & SSL3_FLAGS_CCS_OK)) { | 1245 | if (!(s->s3->flags & SSL3_FLAGS_CCS_OK)) { | 
| 1246 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1246 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1247 | SSLerror(SSL_R_CCS_RECEIVED_EARLY); | 1247 | SSLerror(s, SSL_R_CCS_RECEIVED_EARLY); | 
| 1248 | goto f_err; | 1248 | goto f_err; | 
| 1249 | } | 1249 | } | 
| 1250 | s->s3->flags &= ~SSL3_FLAGS_CCS_OK; | 1250 | s->s3->flags &= ~SSL3_FLAGS_CCS_OK; | 
| @@ -1276,7 +1276,7 @@ start: | |||
| 1276 | if (i < 0) | 1276 | if (i < 0) | 
| 1277 | return (i); | 1277 | return (i); | 
| 1278 | if (i == 0) { | 1278 | if (i == 0) { | 
| 1279 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 1279 | SSLerror(s, SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 1280 | return (-1); | 1280 | return (-1); | 
| 1281 | } | 1281 | } | 
| 1282 | 1282 | ||
| @@ -1305,7 +1305,7 @@ start: | |||
| 1305 | goto start; | 1305 | goto start; | 
| 1306 | } | 1306 | } | 
| 1307 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1307 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1308 | SSLerror(SSL_R_UNEXPECTED_RECORD); | 1308 | SSLerror(s, SSL_R_UNEXPECTED_RECORD); | 
| 1309 | goto f_err; | 1309 | goto f_err; | 
| 1310 | case SSL3_RT_CHANGE_CIPHER_SPEC: | 1310 | case SSL3_RT_CHANGE_CIPHER_SPEC: | 
| 1311 | case SSL3_RT_ALERT: | 1311 | case SSL3_RT_ALERT: | 
| @@ -1314,7 +1314,7 @@ start: | |||
| 1314 | * of SSL3_RT_HANDSHAKE when s->internal->in_handshake is set, but that | 1314 | * of SSL3_RT_HANDSHAKE when s->internal->in_handshake is set, but that | 
| 1315 | * should not happen when type != rr->type */ | 1315 | * should not happen when type != rr->type */ | 
| 1316 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1316 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1317 | SSLerror(ERR_R_INTERNAL_ERROR); | 1317 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1318 | goto f_err; | 1318 | goto f_err; | 
| 1319 | case SSL3_RT_APPLICATION_DATA: | 1319 | case SSL3_RT_APPLICATION_DATA: | 
| 1320 | /* At this point, we were expecting handshake data, | 1320 | /* At this point, we were expecting handshake data, | 
| @@ -1336,7 +1336,7 @@ start: | |||
| 1336 | return (-1); | 1336 | return (-1); | 
| 1337 | } else { | 1337 | } else { | 
| 1338 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1338 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 1339 | SSLerror(SSL_R_UNEXPECTED_RECORD); | 1339 | SSLerror(s, SSL_R_UNEXPECTED_RECORD); | 
| 1340 | goto f_err; | 1340 | goto f_err; | 
| 1341 | } | 1341 | } | 
| 1342 | } | 1342 | } | 
| @@ -1363,7 +1363,7 @@ ssl3_do_change_cipher_spec(SSL *s) | |||
| 1363 | if (S3I(s)->tmp.key_block == NULL) { | 1363 | if (S3I(s)->tmp.key_block == NULL) { | 
| 1364 | if (s->session == NULL || s->session->master_key_length == 0) { | 1364 | if (s->session == NULL || s->session->master_key_length == 0) { | 
| 1365 | /* might happen if dtls1_read_bytes() calls this */ | 1365 | /* might happen if dtls1_read_bytes() calls this */ | 
| 1366 | SSLerror(SSL_R_CCS_RECEIVED_EARLY); | 1366 | SSLerror(s, SSL_R_CCS_RECEIVED_EARLY); | 
| 1367 | return (0); | 1367 | return (0); | 
| 1368 | } | 1368 | } | 
| 1369 | 1369 | ||
| @@ -1389,7 +1389,7 @@ ssl3_do_change_cipher_spec(SSL *s) | |||
| 1389 | i = tls1_final_finish_mac(s, sender, slen, | 1389 | i = tls1_final_finish_mac(s, sender, slen, | 
| 1390 | S3I(s)->tmp.peer_finish_md); | 1390 | S3I(s)->tmp.peer_finish_md); | 
| 1391 | if (i == 0) { | 1391 | if (i == 0) { | 
| 1392 | SSLerror(ERR_R_INTERNAL_ERROR); | 1392 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1393 | return 0; | 1393 | return 0; | 
| 1394 | } | 1394 | } | 
| 1395 | S3I(s)->tmp.peer_finish_md_len = i; | 1395 | S3I(s)->tmp.peer_finish_md_len = i; | 
| diff --git a/src/lib/libssl/ssl_rsa.c b/src/lib/libssl/ssl_rsa.c index facb8ac274..e99ce1e3ae 100644 --- a/src/lib/libssl/ssl_rsa.c +++ b/src/lib/libssl/ssl_rsa.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_rsa.c,v 1.27 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: ssl_rsa.c,v 1.28 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -74,11 +74,11 @@ int | |||
| 74 | SSL_use_certificate(SSL *ssl, X509 *x) | 74 | SSL_use_certificate(SSL *ssl, X509 *x) | 
| 75 | { | 75 | { | 
| 76 | if (x == NULL) { | 76 | if (x == NULL) { | 
| 77 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 77 | SSLerror(ssl, ERR_R_PASSED_NULL_PARAMETER); | 
| 78 | return (0); | 78 | return (0); | 
| 79 | } | 79 | } | 
| 80 | if (!ssl_cert_inst(&ssl->cert)) { | 80 | if (!ssl_cert_inst(&ssl->cert)) { | 
| 81 | SSLerror(ERR_R_MALLOC_FAILURE); | 81 | SSLerror(ssl, ERR_R_MALLOC_FAILURE); | 
| 82 | return (0); | 82 | return (0); | 
| 83 | } | 83 | } | 
| 84 | return (ssl_set_cert(ssl->cert, x)); | 84 | return (ssl_set_cert(ssl->cert, x)); | 
| @@ -94,12 +94,12 @@ SSL_use_certificate_file(SSL *ssl, const char *file, int type) | |||
| 94 | 94 | ||
| 95 | in = BIO_new(BIO_s_file_internal()); | 95 | in = BIO_new(BIO_s_file_internal()); | 
| 96 | if (in == NULL) { | 96 | if (in == NULL) { | 
| 97 | SSLerror(ERR_R_BUF_LIB); | 97 | SSLerror(ssl, ERR_R_BUF_LIB); | 
| 98 | goto end; | 98 | goto end; | 
| 99 | } | 99 | } | 
| 100 | 100 | ||
| 101 | if (BIO_read_filename(in, file) <= 0) { | 101 | if (BIO_read_filename(in, file) <= 0) { | 
| 102 | SSLerror(ERR_R_SYS_LIB); | 102 | SSLerror(ssl, ERR_R_SYS_LIB); | 
| 103 | goto end; | 103 | goto end; | 
| 104 | } | 104 | } | 
| 105 | if (type == SSL_FILETYPE_ASN1) { | 105 | if (type == SSL_FILETYPE_ASN1) { | 
| @@ -111,12 +111,12 @@ SSL_use_certificate_file(SSL *ssl, const char *file, int type) | |||
| 111 | ssl->ctx->default_passwd_callback, | 111 | ssl->ctx->default_passwd_callback, | 
| 112 | ssl->ctx->default_passwd_callback_userdata); | 112 | ssl->ctx->default_passwd_callback_userdata); | 
| 113 | } else { | 113 | } else { | 
| 114 | SSLerror(SSL_R_BAD_SSL_FILETYPE); | 114 | SSLerror(ssl, SSL_R_BAD_SSL_FILETYPE); | 
| 115 | goto end; | 115 | goto end; | 
| 116 | } | 116 | } | 
| 117 | 117 | ||
| 118 | if (x == NULL) { | 118 | if (x == NULL) { | 
| 119 | SSLerror(j); | 119 | SSLerror(ssl, j); | 
| 120 | goto end; | 120 | goto end; | 
| 121 | } | 121 | } | 
| 122 | 122 | ||
| @@ -135,7 +135,7 @@ SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len) | |||
| 135 | 135 | ||
| 136 | x = d2i_X509(NULL, &d,(long)len); | 136 | x = d2i_X509(NULL, &d,(long)len); | 
| 137 | if (x == NULL) { | 137 | if (x == NULL) { | 
| 138 | SSLerror(ERR_R_ASN1_LIB); | 138 | SSLerror(ssl, ERR_R_ASN1_LIB); | 
| 139 | return (0); | 139 | return (0); | 
| 140 | } | 140 | } | 
| 141 | 141 | ||
| @@ -151,15 +151,15 @@ SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa) | |||
| 151 | int ret; | 151 | int ret; | 
| 152 | 152 | ||
| 153 | if (rsa == NULL) { | 153 | if (rsa == NULL) { | 
| 154 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 154 | SSLerror(ssl, ERR_R_PASSED_NULL_PARAMETER); | 
| 155 | return (0); | 155 | return (0); | 
| 156 | } | 156 | } | 
| 157 | if (!ssl_cert_inst(&ssl->cert)) { | 157 | if (!ssl_cert_inst(&ssl->cert)) { | 
| 158 | SSLerror(ERR_R_MALLOC_FAILURE); | 158 | SSLerror(ssl, ERR_R_MALLOC_FAILURE); | 
| 159 | return (0); | 159 | return (0); | 
| 160 | } | 160 | } | 
| 161 | if ((pkey = EVP_PKEY_new()) == NULL) { | 161 | if ((pkey = EVP_PKEY_new()) == NULL) { | 
| 162 | SSLerror(ERR_R_EVP_LIB); | 162 | SSLerror(ssl, ERR_R_EVP_LIB); | 
| 163 | return (0); | 163 | return (0); | 
| 164 | } | 164 | } | 
| 165 | 165 | ||
| @@ -178,7 +178,7 @@ ssl_set_pkey(CERT *c, EVP_PKEY *pkey) | |||
| 178 | 178 | ||
| 179 | i = ssl_cert_type(NULL, pkey); | 179 | i = ssl_cert_type(NULL, pkey); | 
| 180 | if (i < 0) { | 180 | if (i < 0) { | 
| 181 | SSLerror(SSL_R_UNKNOWN_CERTIFICATE_TYPE); | 181 | SSLerrorx(SSL_R_UNKNOWN_CERTIFICATE_TYPE); | 
| 182 | return (0); | 182 | return (0); | 
| 183 | } | 183 | } | 
| 184 | 184 | ||
| @@ -222,12 +222,12 @@ SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type) | |||
| 222 | 222 | ||
| 223 | in = BIO_new(BIO_s_file_internal()); | 223 | in = BIO_new(BIO_s_file_internal()); | 
| 224 | if (in == NULL) { | 224 | if (in == NULL) { | 
| 225 | SSLerror(ERR_R_BUF_LIB); | 225 | SSLerror(ssl, ERR_R_BUF_LIB); | 
| 226 | goto end; | 226 | goto end; | 
| 227 | } | 227 | } | 
| 228 | 228 | ||
| 229 | if (BIO_read_filename(in, file) <= 0) { | 229 | if (BIO_read_filename(in, file) <= 0) { | 
| 230 | SSLerror(ERR_R_SYS_LIB); | 230 | SSLerror(ssl, ERR_R_SYS_LIB); | 
| 231 | goto end; | 231 | goto end; | 
| 232 | } | 232 | } | 
| 233 | if (type == SSL_FILETYPE_ASN1) { | 233 | if (type == SSL_FILETYPE_ASN1) { | 
| @@ -239,11 +239,11 @@ SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type) | |||
| 239 | ssl->ctx->default_passwd_callback, | 239 | ssl->ctx->default_passwd_callback, | 
| 240 | ssl->ctx->default_passwd_callback_userdata); | 240 | ssl->ctx->default_passwd_callback_userdata); | 
| 241 | } else { | 241 | } else { | 
| 242 | SSLerror(SSL_R_BAD_SSL_FILETYPE); | 242 | SSLerror(ssl, SSL_R_BAD_SSL_FILETYPE); | 
| 243 | goto end; | 243 | goto end; | 
| 244 | } | 244 | } | 
| 245 | if (rsa == NULL) { | 245 | if (rsa == NULL) { | 
| 246 | SSLerror(j); | 246 | SSLerror(ssl, j); | 
| 247 | goto end; | 247 | goto end; | 
| 248 | } | 248 | } | 
| 249 | ret = SSL_use_RSAPrivateKey(ssl, rsa); | 249 | ret = SSL_use_RSAPrivateKey(ssl, rsa); | 
| @@ -262,7 +262,7 @@ SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len) | |||
| 262 | 262 | ||
| 263 | p = d; | 263 | p = d; | 
| 264 | if ((rsa = d2i_RSAPrivateKey(NULL, &p,(long)len)) == NULL) { | 264 | if ((rsa = d2i_RSAPrivateKey(NULL, &p,(long)len)) == NULL) { | 
| 265 | SSLerror(ERR_R_ASN1_LIB); | 265 | SSLerror(ssl, ERR_R_ASN1_LIB); | 
| 266 | return (0); | 266 | return (0); | 
| 267 | } | 267 | } | 
| 268 | 268 | ||
| @@ -277,11 +277,11 @@ SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey) | |||
| 277 | int ret; | 277 | int ret; | 
| 278 | 278 | ||
| 279 | if (pkey == NULL) { | 279 | if (pkey == NULL) { | 
| 280 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 280 | SSLerror(ssl, ERR_R_PASSED_NULL_PARAMETER); | 
| 281 | return (0); | 281 | return (0); | 
| 282 | } | 282 | } | 
| 283 | if (!ssl_cert_inst(&ssl->cert)) { | 283 | if (!ssl_cert_inst(&ssl->cert)) { | 
| 284 | SSLerror(ERR_R_MALLOC_FAILURE); | 284 | SSLerror(ssl, ERR_R_MALLOC_FAILURE); | 
| 285 | return (0); | 285 | return (0); | 
| 286 | } | 286 | } | 
| 287 | ret = ssl_set_pkey(ssl->cert, pkey); | 287 | ret = ssl_set_pkey(ssl->cert, pkey); | 
| @@ -297,12 +297,12 @@ SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type) | |||
| 297 | 297 | ||
| 298 | in = BIO_new(BIO_s_file_internal()); | 298 | in = BIO_new(BIO_s_file_internal()); | 
| 299 | if (in == NULL) { | 299 | if (in == NULL) { | 
| 300 | SSLerror(ERR_R_BUF_LIB); | 300 | SSLerror(ssl, ERR_R_BUF_LIB); | 
| 301 | goto end; | 301 | goto end; | 
| 302 | } | 302 | } | 
| 303 | 303 | ||
| 304 | if (BIO_read_filename(in, file) <= 0) { | 304 | if (BIO_read_filename(in, file) <= 0) { | 
| 305 | SSLerror(ERR_R_SYS_LIB); | 305 | SSLerror(ssl, ERR_R_SYS_LIB); | 
| 306 | goto end; | 306 | goto end; | 
| 307 | } | 307 | } | 
| 308 | if (type == SSL_FILETYPE_PEM) { | 308 | if (type == SSL_FILETYPE_PEM) { | 
| @@ -314,11 +314,11 @@ SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type) | |||
| 314 | j = ERR_R_ASN1_LIB; | 314 | j = ERR_R_ASN1_LIB; | 
| 315 | pkey = d2i_PrivateKey_bio(in, NULL); | 315 | pkey = d2i_PrivateKey_bio(in, NULL); | 
| 316 | } else { | 316 | } else { | 
| 317 | SSLerror(SSL_R_BAD_SSL_FILETYPE); | 317 | SSLerror(ssl, SSL_R_BAD_SSL_FILETYPE); | 
| 318 | goto end; | 318 | goto end; | 
| 319 | } | 319 | } | 
| 320 | if (pkey == NULL) { | 320 | if (pkey == NULL) { | 
| 321 | SSLerror(j); | 321 | SSLerror(ssl, j); | 
| 322 | goto end; | 322 | goto end; | 
| 323 | } | 323 | } | 
| 324 | ret = SSL_use_PrivateKey(ssl, pkey); | 324 | ret = SSL_use_PrivateKey(ssl, pkey); | 
| @@ -337,7 +337,7 @@ SSL_use_PrivateKey_ASN1(int type, SSL *ssl, const unsigned char *d, long len) | |||
| 337 | 337 | ||
| 338 | p = d; | 338 | p = d; | 
| 339 | if ((pkey = d2i_PrivateKey(type, NULL, &p,(long)len)) == NULL) { | 339 | if ((pkey = d2i_PrivateKey(type, NULL, &p,(long)len)) == NULL) { | 
| 340 | SSLerror(ERR_R_ASN1_LIB); | 340 | SSLerror(ssl, ERR_R_ASN1_LIB); | 
| 341 | return (0); | 341 | return (0); | 
| 342 | } | 342 | } | 
| 343 | 343 | ||
| @@ -350,11 +350,11 @@ int | |||
| 350 | SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x) | 350 | SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x) | 
| 351 | { | 351 | { | 
| 352 | if (x == NULL) { | 352 | if (x == NULL) { | 
| 353 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 353 | SSLerrorx(ERR_R_PASSED_NULL_PARAMETER); | 
| 354 | return (0); | 354 | return (0); | 
| 355 | } | 355 | } | 
| 356 | if (!ssl_cert_inst(&ctx->internal->cert)) { | 356 | if (!ssl_cert_inst(&ctx->internal->cert)) { | 
| 357 | SSLerror(ERR_R_MALLOC_FAILURE); | 357 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 358 | return (0); | 358 | return (0); | 
| 359 | } | 359 | } | 
| 360 | return (ssl_set_cert(ctx->internal->cert, x)); | 360 | return (ssl_set_cert(ctx->internal->cert, x)); | 
| @@ -368,13 +368,13 @@ ssl_set_cert(CERT *c, X509 *x) | |||
| 368 | 368 | ||
| 369 | pkey = X509_get_pubkey(x); | 369 | pkey = X509_get_pubkey(x); | 
| 370 | if (pkey == NULL) { | 370 | if (pkey == NULL) { | 
| 371 | SSLerror(SSL_R_X509_LIB); | 371 | SSLerrorx(SSL_R_X509_LIB); | 
| 372 | return (0); | 372 | return (0); | 
| 373 | } | 373 | } | 
| 374 | 374 | ||
| 375 | i = ssl_cert_type(x, pkey); | 375 | i = ssl_cert_type(x, pkey); | 
| 376 | if (i < 0) { | 376 | if (i < 0) { | 
| 377 | SSLerror(SSL_R_UNKNOWN_CERTIFICATE_TYPE); | 377 | SSLerrorx(SSL_R_UNKNOWN_CERTIFICATE_TYPE); | 
| 378 | EVP_PKEY_free(pkey); | 378 | EVP_PKEY_free(pkey); | 
| 379 | return (0); | 379 | return (0); | 
| 380 | } | 380 | } | 
| @@ -427,12 +427,12 @@ SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type) | |||
| 427 | 427 | ||
| 428 | in = BIO_new(BIO_s_file_internal()); | 428 | in = BIO_new(BIO_s_file_internal()); | 
| 429 | if (in == NULL) { | 429 | if (in == NULL) { | 
| 430 | SSLerror(ERR_R_BUF_LIB); | 430 | SSLerrorx(ERR_R_BUF_LIB); | 
| 431 | goto end; | 431 | goto end; | 
| 432 | } | 432 | } | 
| 433 | 433 | ||
| 434 | if (BIO_read_filename(in, file) <= 0) { | 434 | if (BIO_read_filename(in, file) <= 0) { | 
| 435 | SSLerror(ERR_R_SYS_LIB); | 435 | SSLerrorx(ERR_R_SYS_LIB); | 
| 436 | goto end; | 436 | goto end; | 
| 437 | } | 437 | } | 
| 438 | if (type == SSL_FILETYPE_ASN1) { | 438 | if (type == SSL_FILETYPE_ASN1) { | 
| @@ -443,12 +443,12 @@ SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type) | |||
| 443 | x = PEM_read_bio_X509(in, NULL, ctx->default_passwd_callback, | 443 | x = PEM_read_bio_X509(in, NULL, ctx->default_passwd_callback, | 
| 444 | ctx->default_passwd_callback_userdata); | 444 | ctx->default_passwd_callback_userdata); | 
| 445 | } else { | 445 | } else { | 
| 446 | SSLerror(SSL_R_BAD_SSL_FILETYPE); | 446 | SSLerrorx(SSL_R_BAD_SSL_FILETYPE); | 
| 447 | goto end; | 447 | goto end; | 
| 448 | } | 448 | } | 
| 449 | 449 | ||
| 450 | if (x == NULL) { | 450 | if (x == NULL) { | 
| 451 | SSLerror(j); | 451 | SSLerrorx(j); | 
| 452 | goto end; | 452 | goto end; | 
| 453 | } | 453 | } | 
| 454 | 454 | ||
| @@ -467,7 +467,7 @@ SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d) | |||
| 467 | 467 | ||
| 468 | x = d2i_X509(NULL, &d,(long)len); | 468 | x = d2i_X509(NULL, &d,(long)len); | 
| 469 | if (x == NULL) { | 469 | if (x == NULL) { | 
| 470 | SSLerror(ERR_R_ASN1_LIB); | 470 | SSLerrorx(ERR_R_ASN1_LIB); | 
| 471 | return (0); | 471 | return (0); | 
| 472 | } | 472 | } | 
| 473 | 473 | ||
| @@ -483,15 +483,15 @@ SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa) | |||
| 483 | EVP_PKEY *pkey; | 483 | EVP_PKEY *pkey; | 
| 484 | 484 | ||
| 485 | if (rsa == NULL) { | 485 | if (rsa == NULL) { | 
| 486 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 486 | SSLerrorx(ERR_R_PASSED_NULL_PARAMETER); | 
| 487 | return (0); | 487 | return (0); | 
| 488 | } | 488 | } | 
| 489 | if (!ssl_cert_inst(&ctx->internal->cert)) { | 489 | if (!ssl_cert_inst(&ctx->internal->cert)) { | 
| 490 | SSLerror(ERR_R_MALLOC_FAILURE); | 490 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 491 | return (0); | 491 | return (0); | 
| 492 | } | 492 | } | 
| 493 | if ((pkey = EVP_PKEY_new()) == NULL) { | 493 | if ((pkey = EVP_PKEY_new()) == NULL) { | 
| 494 | SSLerror(ERR_R_EVP_LIB); | 494 | SSLerrorx(ERR_R_EVP_LIB); | 
| 495 | return (0); | 495 | return (0); | 
| 496 | } | 496 | } | 
| 497 | 497 | ||
| @@ -512,12 +512,12 @@ SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type) | |||
| 512 | 512 | ||
| 513 | in = BIO_new(BIO_s_file_internal()); | 513 | in = BIO_new(BIO_s_file_internal()); | 
| 514 | if (in == NULL) { | 514 | if (in == NULL) { | 
| 515 | SSLerror(ERR_R_BUF_LIB); | 515 | SSLerrorx(ERR_R_BUF_LIB); | 
| 516 | goto end; | 516 | goto end; | 
| 517 | } | 517 | } | 
| 518 | 518 | ||
| 519 | if (BIO_read_filename(in, file) <= 0) { | 519 | if (BIO_read_filename(in, file) <= 0) { | 
| 520 | SSLerror(ERR_R_SYS_LIB); | 520 | SSLerrorx(ERR_R_SYS_LIB); | 
| 521 | goto end; | 521 | goto end; | 
| 522 | } | 522 | } | 
| 523 | if (type == SSL_FILETYPE_ASN1) { | 523 | if (type == SSL_FILETYPE_ASN1) { | 
| @@ -529,11 +529,11 @@ SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type) | |||
| 529 | ctx->default_passwd_callback, | 529 | ctx->default_passwd_callback, | 
| 530 | ctx->default_passwd_callback_userdata); | 530 | ctx->default_passwd_callback_userdata); | 
| 531 | } else { | 531 | } else { | 
| 532 | SSLerror(SSL_R_BAD_SSL_FILETYPE); | 532 | SSLerrorx(SSL_R_BAD_SSL_FILETYPE); | 
| 533 | goto end; | 533 | goto end; | 
| 534 | } | 534 | } | 
| 535 | if (rsa == NULL) { | 535 | if (rsa == NULL) { | 
| 536 | SSLerror(j); | 536 | SSLerrorx(j); | 
| 537 | goto end; | 537 | goto end; | 
| 538 | } | 538 | } | 
| 539 | ret = SSL_CTX_use_RSAPrivateKey(ctx, rsa); | 539 | ret = SSL_CTX_use_RSAPrivateKey(ctx, rsa); | 
| @@ -552,7 +552,7 @@ SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len) | |||
| 552 | 552 | ||
| 553 | p = d; | 553 | p = d; | 
| 554 | if ((rsa = d2i_RSAPrivateKey(NULL, &p,(long)len)) == NULL) { | 554 | if ((rsa = d2i_RSAPrivateKey(NULL, &p,(long)len)) == NULL) { | 
| 555 | SSLerror(ERR_R_ASN1_LIB); | 555 | SSLerrorx(ERR_R_ASN1_LIB); | 
| 556 | return (0); | 556 | return (0); | 
| 557 | } | 557 | } | 
| 558 | 558 | ||
| @@ -565,11 +565,11 @@ int | |||
| 565 | SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey) | 565 | SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey) | 
| 566 | { | 566 | { | 
| 567 | if (pkey == NULL) { | 567 | if (pkey == NULL) { | 
| 568 | SSLerror(ERR_R_PASSED_NULL_PARAMETER); | 568 | SSLerrorx(ERR_R_PASSED_NULL_PARAMETER); | 
| 569 | return (0); | 569 | return (0); | 
| 570 | } | 570 | } | 
| 571 | if (!ssl_cert_inst(&ctx->internal->cert)) { | 571 | if (!ssl_cert_inst(&ctx->internal->cert)) { | 
| 572 | SSLerror(ERR_R_MALLOC_FAILURE); | 572 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 573 | return (0); | 573 | return (0); | 
| 574 | } | 574 | } | 
| 575 | return (ssl_set_pkey(ctx->internal->cert, pkey)); | 575 | return (ssl_set_pkey(ctx->internal->cert, pkey)); | 
| @@ -584,12 +584,12 @@ SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type) | |||
| 584 | 584 | ||
| 585 | in = BIO_new(BIO_s_file_internal()); | 585 | in = BIO_new(BIO_s_file_internal()); | 
| 586 | if (in == NULL) { | 586 | if (in == NULL) { | 
| 587 | SSLerror(ERR_R_BUF_LIB); | 587 | SSLerrorx(ERR_R_BUF_LIB); | 
| 588 | goto end; | 588 | goto end; | 
| 589 | } | 589 | } | 
| 590 | 590 | ||
| 591 | if (BIO_read_filename(in, file) <= 0) { | 591 | if (BIO_read_filename(in, file) <= 0) { | 
| 592 | SSLerror(ERR_R_SYS_LIB); | 592 | SSLerrorx(ERR_R_SYS_LIB); | 
| 593 | goto end; | 593 | goto end; | 
| 594 | } | 594 | } | 
| 595 | if (type == SSL_FILETYPE_PEM) { | 595 | if (type == SSL_FILETYPE_PEM) { | 
| @@ -601,11 +601,11 @@ SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type) | |||
| 601 | j = ERR_R_ASN1_LIB; | 601 | j = ERR_R_ASN1_LIB; | 
| 602 | pkey = d2i_PrivateKey_bio(in, NULL); | 602 | pkey = d2i_PrivateKey_bio(in, NULL); | 
| 603 | } else { | 603 | } else { | 
| 604 | SSLerror(SSL_R_BAD_SSL_FILETYPE); | 604 | SSLerrorx(SSL_R_BAD_SSL_FILETYPE); | 
| 605 | goto end; | 605 | goto end; | 
| 606 | } | 606 | } | 
| 607 | if (pkey == NULL) { | 607 | if (pkey == NULL) { | 
| 608 | SSLerror(j); | 608 | SSLerrorx(j); | 
| 609 | goto end; | 609 | goto end; | 
| 610 | } | 610 | } | 
| 611 | ret = SSL_CTX_use_PrivateKey(ctx, pkey); | 611 | ret = SSL_CTX_use_PrivateKey(ctx, pkey); | 
| @@ -625,7 +625,7 @@ SSL_CTX_use_PrivateKey_ASN1(int type, SSL_CTX *ctx, const unsigned char *d, | |||
| 625 | 625 | ||
| 626 | p = d; | 626 | p = d; | 
| 627 | if ((pkey = d2i_PrivateKey(type, NULL, &p,(long)len)) == NULL) { | 627 | if ((pkey = d2i_PrivateKey(type, NULL, &p,(long)len)) == NULL) { | 
| 628 | SSLerror(ERR_R_ASN1_LIB); | 628 | SSLerrorx(ERR_R_ASN1_LIB); | 
| 629 | return (0); | 629 | return (0); | 
| 630 | } | 630 | } | 
| 631 | 631 | ||
| @@ -651,7 +651,7 @@ ssl_ctx_use_certificate_chain_bio(SSL_CTX *ctx, BIO *in) | |||
| 651 | x = PEM_read_bio_X509_AUX(in, NULL, ctx->default_passwd_callback, | 651 | x = PEM_read_bio_X509_AUX(in, NULL, ctx->default_passwd_callback, | 
| 652 | ctx->default_passwd_callback_userdata); | 652 | ctx->default_passwd_callback_userdata); | 
| 653 | if (x == NULL) { | 653 | if (x == NULL) { | 
| 654 | SSLerror(ERR_R_PEM_LIB); | 654 | SSLerrorx(ERR_R_PEM_LIB); | 
| 655 | goto end; | 655 | goto end; | 
| 656 | } | 656 | } | 
| 657 | 657 | ||
| @@ -711,12 +711,12 @@ SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file) | |||
| 711 | 711 | ||
| 712 | in = BIO_new(BIO_s_file_internal()); | 712 | in = BIO_new(BIO_s_file_internal()); | 
| 713 | if (in == NULL) { | 713 | if (in == NULL) { | 
| 714 | SSLerror(ERR_R_BUF_LIB); | 714 | SSLerrorx(ERR_R_BUF_LIB); | 
| 715 | goto end; | 715 | goto end; | 
| 716 | } | 716 | } | 
| 717 | 717 | ||
| 718 | if (BIO_read_filename(in, file) <= 0) { | 718 | if (BIO_read_filename(in, file) <= 0) { | 
| 719 | SSLerror(ERR_R_SYS_LIB); | 719 | SSLerrorx(ERR_R_SYS_LIB); | 
| 720 | goto end; | 720 | goto end; | 
| 721 | } | 721 | } | 
| 722 | 722 | ||
| @@ -735,7 +735,7 @@ SSL_CTX_use_certificate_chain_mem(SSL_CTX *ctx, void *buf, int len) | |||
| 735 | 735 | ||
| 736 | in = BIO_new_mem_buf(buf, len); | 736 | in = BIO_new_mem_buf(buf, len); | 
| 737 | if (in == NULL) { | 737 | if (in == NULL) { | 
| 738 | SSLerror(ERR_R_BUF_LIB); | 738 | SSLerrorx(ERR_R_BUF_LIB); | 
| 739 | goto end; | 739 | goto end; | 
| 740 | } | 740 | } | 
| 741 | 741 | ||
| diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c index 5477e9a168..5d80e58196 100644 --- a/src/lib/libssl/ssl_sess.c +++ b/src/lib/libssl/ssl_sess.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_sess.c,v 1.69 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: ssl_sess.c,v 1.70 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -200,12 +200,12 @@ SSL_SESSION_new(void) | |||
| 200 | SSL_SESSION *ss; | 200 | SSL_SESSION *ss; | 
| 201 | 201 | ||
| 202 | if ((ss = calloc(1, sizeof(*ss))) == NULL) { | 202 | if ((ss = calloc(1, sizeof(*ss))) == NULL) { | 
| 203 | SSLerror(ERR_R_MALLOC_FAILURE); | 203 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 204 | return (NULL); | 204 | return (NULL); | 
| 205 | } | 205 | } | 
| 206 | if ((ss->internal = calloc(1, sizeof(*ss->internal))) == NULL) { | 206 | if ((ss->internal = calloc(1, sizeof(*ss->internal))) == NULL) { | 
| 207 | free(ss); | 207 | free(ss); | 
| 208 | SSLerror(ERR_R_MALLOC_FAILURE); | 208 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 209 | return (NULL); | 209 | return (NULL); | 
| 210 | } | 210 | } | 
| 211 | 211 | ||
| @@ -312,7 +312,7 @@ ssl_get_new_session(SSL *s, int session) | |||
| 312 | ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH; | 312 | ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH; | 
| 313 | break; | 313 | break; | 
| 314 | default: | 314 | default: | 
| 315 | SSLerror(SSL_R_UNSUPPORTED_SSL_VERSION); | 315 | SSLerror(s, SSL_R_UNSUPPORTED_SSL_VERSION); | 
| 316 | SSL_SESSION_free(ss); | 316 | SSL_SESSION_free(ss); | 
| 317 | return (0); | 317 | return (0); | 
| 318 | } | 318 | } | 
| @@ -335,7 +335,7 @@ ssl_get_new_session(SSL *s, int session) | |||
| 335 | tmp = ss->session_id_length; | 335 | tmp = ss->session_id_length; | 
| 336 | if (!cb(s, ss->session_id, &tmp)) { | 336 | if (!cb(s, ss->session_id, &tmp)) { | 
| 337 | /* The callback failed */ | 337 | /* The callback failed */ | 
| 338 | SSLerror(SSL_R_SSL_SESSION_ID_CALLBACK_FAILED); | 338 | SSLerror(s, SSL_R_SSL_SESSION_ID_CALLBACK_FAILED); | 
| 339 | SSL_SESSION_free(ss); | 339 | SSL_SESSION_free(ss); | 
| 340 | return (0); | 340 | return (0); | 
| 341 | } | 341 | } | 
| @@ -346,7 +346,7 @@ ssl_get_new_session(SSL *s, int session) | |||
| 346 | */ | 346 | */ | 
| 347 | if (!tmp || (tmp > ss->session_id_length)) { | 347 | if (!tmp || (tmp > ss->session_id_length)) { | 
| 348 | /* The callback set an illegal length */ | 348 | /* The callback set an illegal length */ | 
| 349 | SSLerror(SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH); | 349 | SSLerror(s, SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH); | 
| 350 | SSL_SESSION_free(ss); | 350 | SSL_SESSION_free(ss); | 
| 351 | return (0); | 351 | return (0); | 
| 352 | } | 352 | } | 
| @@ -355,7 +355,7 @@ ssl_get_new_session(SSL *s, int session) | |||
| 355 | /* Finally, check for a conflict. */ | 355 | /* Finally, check for a conflict. */ | 
| 356 | if (SSL_has_matching_session_id(s, ss->session_id, | 356 | if (SSL_has_matching_session_id(s, ss->session_id, | 
| 357 | ss->session_id_length)) { | 357 | ss->session_id_length)) { | 
| 358 | SSLerror(SSL_R_SSL_SESSION_ID_CONFLICT); | 358 | SSLerror(s, SSL_R_SSL_SESSION_ID_CONFLICT); | 
| 359 | SSL_SESSION_free(ss); | 359 | SSL_SESSION_free(ss); | 
| 360 | return (0); | 360 | return (0); | 
| 361 | } | 361 | } | 
| @@ -364,7 +364,7 @@ sess_id_done: | |||
| 364 | if (s->tlsext_hostname) { | 364 | if (s->tlsext_hostname) { | 
| 365 | ss->tlsext_hostname = strdup(s->tlsext_hostname); | 365 | ss->tlsext_hostname = strdup(s->tlsext_hostname); | 
| 366 | if (ss->tlsext_hostname == NULL) { | 366 | if (ss->tlsext_hostname == NULL) { | 
| 367 | SSLerror(ERR_R_INTERNAL_ERROR); | 367 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 368 | SSL_SESSION_free(ss); | 368 | SSL_SESSION_free(ss); | 
| 369 | return 0; | 369 | return 0; | 
| 370 | } | 370 | } | 
| @@ -374,7 +374,7 @@ sess_id_done: | |||
| 374 | } | 374 | } | 
| 375 | 375 | ||
| 376 | if (s->sid_ctx_length > sizeof ss->sid_ctx) { | 376 | if (s->sid_ctx_length > sizeof ss->sid_ctx) { | 
| 377 | SSLerror(ERR_R_INTERNAL_ERROR); | 377 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 378 | SSL_SESSION_free(ss); | 378 | SSL_SESSION_free(ss); | 
| 379 | return 0; | 379 | return 0; | 
| 380 | } | 380 | } | 
| @@ -523,7 +523,7 @@ ssl_get_prev_session(SSL *s, unsigned char *session_id, int len, | |||
| 523 | * applications to effectively disable the session cache by | 523 | * applications to effectively disable the session cache by | 
| 524 | * accident without anyone noticing). | 524 | * accident without anyone noticing). | 
| 525 | */ | 525 | */ | 
| 526 | SSLerror(SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED); | 526 | SSLerror(s, SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED); | 
| 527 | fatal = 1; | 527 | fatal = 1; | 
| 528 | goto err; | 528 | goto err; | 
| 529 | } | 529 | } | 
| @@ -723,7 +723,7 @@ SSL_set_session(SSL *s, SSL_SESSION *session) | |||
| 723 | if (meth == NULL) | 723 | if (meth == NULL) | 
| 724 | meth = s->method->internal->get_ssl_method(session->ssl_version); | 724 | meth = s->method->internal->get_ssl_method(session->ssl_version); | 
| 725 | if (meth == NULL) { | 725 | if (meth == NULL) { | 
| 726 | SSLerror(SSL_R_UNABLE_TO_FIND_SSL_METHOD); | 726 | SSLerror(s, SSL_R_UNABLE_TO_FIND_SSL_METHOD); | 
| 727 | return (0); | 727 | return (0); | 
| 728 | } | 728 | } | 
| 729 | 729 | ||
| @@ -803,7 +803,7 @@ SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, | |||
| 803 | unsigned int sid_ctx_len) | 803 | unsigned int sid_ctx_len) | 
| 804 | { | 804 | { | 
| 805 | if (sid_ctx_len > SSL_MAX_SID_CTX_LENGTH) { | 805 | if (sid_ctx_len > SSL_MAX_SID_CTX_LENGTH) { | 
| 806 | SSLerror(SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); | 806 | SSLerrorx(SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); | 
| 807 | return 0; | 807 | return 0; | 
| 808 | } | 808 | } | 
| 809 | s->sid_ctx_length = sid_ctx_len; | 809 | s->sid_ctx_length = sid_ctx_len; | 
| @@ -864,7 +864,7 @@ SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len) | |||
| 864 | s->internal->tlsext_session_ticket = | 864 | s->internal->tlsext_session_ticket = | 
| 865 | malloc(sizeof(TLS_SESSION_TICKET_EXT) + ext_len); | 865 | malloc(sizeof(TLS_SESSION_TICKET_EXT) + ext_len); | 
| 866 | if (!s->internal->tlsext_session_ticket) { | 866 | if (!s->internal->tlsext_session_ticket) { | 
| 867 | SSLerror(ERR_R_MALLOC_FAILURE); | 867 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 868 | return 0; | 868 | return 0; | 
| 869 | } | 869 | } | 
| 870 | 870 | ||
| @@ -1071,11 +1071,11 @@ int | |||
| 1071 | SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e) | 1071 | SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e) | 
| 1072 | { | 1072 | { | 
| 1073 | if (!ENGINE_init(e)) { | 1073 | if (!ENGINE_init(e)) { | 
| 1074 | SSLerror(ERR_R_ENGINE_LIB); | 1074 | SSLerrorx(ERR_R_ENGINE_LIB); | 
| 1075 | return 0; | 1075 | return 0; | 
| 1076 | } | 1076 | } | 
| 1077 | if (!ENGINE_get_ssl_client_cert_function(e)) { | 1077 | if (!ENGINE_get_ssl_client_cert_function(e)) { | 
| 1078 | SSLerror(SSL_R_NO_CLIENT_CERT_METHOD); | 1078 | SSLerrorx(SSL_R_NO_CLIENT_CERT_METHOD); | 
| 1079 | ENGINE_finish(e); | 1079 | ENGINE_finish(e); | 
| 1080 | return 0; | 1080 | return 0; | 
| 1081 | } | 1081 | } | 
| diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index 217ecafeec..bb43ec74e2 100644 --- a/src/lib/libssl/ssl_srvr.c +++ b/src/lib/libssl/ssl_srvr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_srvr.c,v 1.5 2017/01/26 12:28:00 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.6 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -189,7 +189,7 @@ ssl3_accept(SSL *s) | |||
| 189 | SSL_clear(s); | 189 | SSL_clear(s); | 
| 190 | 190 | ||
| 191 | if (s->cert == NULL) { | 191 | if (s->cert == NULL) { | 
| 192 | SSLerror(SSL_R_NO_CERTIFICATE_SET); | 192 | SSLerror(s, SSL_R_NO_CERTIFICATE_SET); | 
| 193 | ret = -1; | 193 | ret = -1; | 
| 194 | goto end; | 194 | goto end; | 
| 195 | } | 195 | } | 
| @@ -212,7 +212,7 @@ ssl3_accept(SSL *s) | |||
| 212 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 212 | cb(s, SSL_CB_HANDSHAKE_START, 1); | 
| 213 | 213 | ||
| 214 | if ((s->version >> 8) != 3) { | 214 | if ((s->version >> 8) != 3) { | 
| 215 | SSLerror(ERR_R_INTERNAL_ERROR); | 215 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 216 | ret = -1; | 216 | ret = -1; | 
| 217 | goto end; | 217 | goto end; | 
| 218 | } | 218 | } | 
| @@ -253,7 +253,7 @@ ssl3_accept(SSL *s) | |||
| 253 | * client that doesn't support secure | 253 | * client that doesn't support secure | 
| 254 | * renegotiation. | 254 | * renegotiation. | 
| 255 | */ | 255 | */ | 
| 256 | SSLerror(SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 256 | SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 
| 257 | ssl3_send_alert(s, SSL3_AL_FATAL, | 257 | ssl3_send_alert(s, SSL3_AL_FATAL, | 
| 258 | SSL_AD_HANDSHAKE_FAILURE); | 258 | SSL_AD_HANDSHAKE_FAILURE); | 
| 259 | ret = -1; | 259 | ret = -1; | 
| @@ -483,7 +483,7 @@ ssl3_accept(SSL *s) | |||
| 483 | * at this point and digest cached records. | 483 | * at this point and digest cached records. | 
| 484 | */ | 484 | */ | 
| 485 | if (!S3I(s)->handshake_buffer) { | 485 | if (!S3I(s)->handshake_buffer) { | 
| 486 | SSLerror(ERR_R_INTERNAL_ERROR); | 486 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 487 | ret = -1; | 487 | ret = -1; | 
| 488 | goto end; | 488 | goto end; | 
| 489 | } | 489 | } | 
| @@ -671,7 +671,7 @@ ssl3_accept(SSL *s) | |||
| 671 | /* break; */ | 671 | /* break; */ | 
| 672 | 672 | ||
| 673 | default: | 673 | default: | 
| 674 | SSLerror(SSL_R_UNKNOWN_STATE); | 674 | SSLerror(s, SSL_R_UNKNOWN_STATE); | 
| 675 | ret = -1; | 675 | ret = -1; | 
| 676 | goto end; | 676 | goto end; | 
| 677 | /* break; */ | 677 | /* break; */ | 
| @@ -770,7 +770,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 770 | goto truncated; | 770 | goto truncated; | 
| 771 | 771 | ||
| 772 | if (ssl_max_shared_version(s, client_version, &shared_version) != 1) { | 772 | if (ssl_max_shared_version(s, client_version, &shared_version) != 1) { | 
| 773 | SSLerror(SSL_R_WRONG_VERSION_NUMBER); | 773 | SSLerror(s, SSL_R_WRONG_VERSION_NUMBER); | 
| 774 | if ((s->client_version >> 8) == SSL3_VERSION_MAJOR && | 774 | if ((s->client_version >> 8) == SSL3_VERSION_MAJOR && | 
| 775 | !s->internal->enc_write_ctx && !s->internal->write_hash) { | 775 | !s->internal->enc_write_ctx && !s->internal->write_hash) { | 
| 776 | /* | 776 | /* | 
| @@ -788,7 +788,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 788 | if ((method = tls1_get_server_method(shared_version)) == NULL) | 788 | if ((method = tls1_get_server_method(shared_version)) == NULL) | 
| 789 | method = dtls1_get_server_method(shared_version); | 789 | method = dtls1_get_server_method(shared_version); | 
| 790 | if (method == NULL) { | 790 | if (method == NULL) { | 
| 791 | SSLerror(ERR_R_INTERNAL_ERROR); | 791 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 792 | goto err; | 792 | goto err; | 
| 793 | } | 793 | } | 
| 794 | s->method = method; | 794 | s->method = method; | 
| @@ -861,7 +861,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 861 | */ | 861 | */ | 
| 862 | if (CBS_len(&cookie) > sizeof(D1I(s)->rcvd_cookie)) { | 862 | if (CBS_len(&cookie) > sizeof(D1I(s)->rcvd_cookie)) { | 
| 863 | al = SSL_AD_DECODE_ERROR; | 863 | al = SSL_AD_DECODE_ERROR; | 
| 864 | SSLerror(SSL_R_COOKIE_MISMATCH); | 864 | SSLerror(s, SSL_R_COOKIE_MISMATCH); | 
| 865 | goto f_err; | 865 | goto f_err; | 
| 866 | } | 866 | } | 
| 867 | 867 | ||
| @@ -879,7 +879,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 879 | if (s->ctx->internal->app_verify_cookie_cb(s, | 879 | if (s->ctx->internal->app_verify_cookie_cb(s, | 
| 880 | D1I(s)->rcvd_cookie, cookie_len) == 0) { | 880 | D1I(s)->rcvd_cookie, cookie_len) == 0) { | 
| 881 | al = SSL_AD_HANDSHAKE_FAILURE; | 881 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 882 | SSLerror(SSL_R_COOKIE_MISMATCH); | 882 | SSLerror(s, SSL_R_COOKIE_MISMATCH); | 
| 883 | goto f_err; | 883 | goto f_err; | 
| 884 | } | 884 | } | 
| 885 | /* else cookie verification succeeded */ | 885 | /* else cookie verification succeeded */ | 
| @@ -888,7 +888,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 888 | D1I(s)->cookie, D1I(s)->cookie_len) != 0) { | 888 | D1I(s)->cookie, D1I(s)->cookie_len) != 0) { | 
| 889 | /* default verification */ | 889 | /* default verification */ | 
| 890 | al = SSL_AD_HANDSHAKE_FAILURE; | 890 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 891 | SSLerror(SSL_R_COOKIE_MISMATCH); | 891 | SSLerror(s, SSL_R_COOKIE_MISMATCH); | 
| 892 | goto f_err; | 892 | goto f_err; | 
| 893 | } | 893 | } | 
| 894 | ret = 2; | 894 | ret = 2; | 
| @@ -902,7 +902,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 902 | if (CBS_len(&cipher_suites) == 0 && CBS_len(&session_id) != 0) { | 902 | if (CBS_len(&cipher_suites) == 0 && CBS_len(&session_id) != 0) { | 
| 903 | /* we need a cipher if we are not resuming a session */ | 903 | /* we need a cipher if we are not resuming a session */ | 
| 904 | al = SSL_AD_ILLEGAL_PARAMETER; | 904 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 905 | SSLerror(SSL_R_NO_CIPHERS_SPECIFIED); | 905 | SSLerror(s, SSL_R_NO_CIPHERS_SPECIFIED); | 
| 906 | goto f_err; | 906 | goto f_err; | 
| 907 | } | 907 | } | 
| 908 | 908 | ||
| @@ -930,7 +930,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 930 | * list if we are asked to reuse it | 930 | * list if we are asked to reuse it | 
| 931 | */ | 931 | */ | 
| 932 | al = SSL_AD_ILLEGAL_PARAMETER; | 932 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 933 | SSLerror(SSL_R_REQUIRED_CIPHER_MISSING); | 933 | SSLerror(s, SSL_R_REQUIRED_CIPHER_MISSING); | 
| 934 | goto f_err; | 934 | goto f_err; | 
| 935 | } | 935 | } | 
| 936 | } | 936 | } | 
| @@ -947,7 +947,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 947 | } | 947 | } | 
| 948 | if (comp_null == 0) { | 948 | if (comp_null == 0) { | 
| 949 | al = SSL_AD_DECODE_ERROR; | 949 | al = SSL_AD_DECODE_ERROR; | 
| 950 | SSLerror(SSL_R_NO_COMPRESSION_SPECIFIED); | 950 | SSLerror(s, SSL_R_NO_COMPRESSION_SPECIFIED); | 
| 951 | goto f_err; | 951 | goto f_err; | 
| 952 | } | 952 | } | 
| 953 | 953 | ||
| @@ -956,11 +956,11 @@ ssl3_get_client_hello(SSL *s) | |||
| 956 | /* TLS extensions*/ | 956 | /* TLS extensions*/ | 
| 957 | if (!ssl_parse_clienthello_tlsext(s, &p, d, n, &al)) { | 957 | if (!ssl_parse_clienthello_tlsext(s, &p, d, n, &al)) { | 
| 958 | /* 'al' set by ssl_parse_clienthello_tlsext */ | 958 | /* 'al' set by ssl_parse_clienthello_tlsext */ | 
| 959 | SSLerror(SSL_R_PARSE_TLSEXT); | 959 | SSLerror(s, SSL_R_PARSE_TLSEXT); | 
| 960 | goto f_err; | 960 | goto f_err; | 
| 961 | } | 961 | } | 
| 962 | if (ssl_check_clienthello_tlsext_early(s) <= 0) { | 962 | if (ssl_check_clienthello_tlsext_early(s) <= 0) { | 
| 963 | SSLerror(SSL_R_CLIENTHELLO_TLSEXT); | 963 | SSLerror(s, SSL_R_CLIENTHELLO_TLSEXT); | 
| 964 | goto err; | 964 | goto err; | 
| 965 | } | 965 | } | 
| 966 | 966 | ||
| @@ -991,7 +991,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 991 | SSL_get_ciphers(s)); | 991 | SSL_get_ciphers(s)); | 
| 992 | if (pref_cipher == NULL) { | 992 | if (pref_cipher == NULL) { | 
| 993 | al = SSL_AD_HANDSHAKE_FAILURE; | 993 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 994 | SSLerror(SSL_R_NO_SHARED_CIPHER); | 994 | SSLerror(s, SSL_R_NO_SHARED_CIPHER); | 
| 995 | goto f_err; | 995 | goto f_err; | 
| 996 | } | 996 | } | 
| 997 | 997 | ||
| @@ -1016,7 +1016,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1016 | s->session->ciphers = ciphers; | 1016 | s->session->ciphers = ciphers; | 
| 1017 | if (ciphers == NULL) { | 1017 | if (ciphers == NULL) { | 
| 1018 | al = SSL_AD_ILLEGAL_PARAMETER; | 1018 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 1019 | SSLerror(SSL_R_NO_CIPHERS_PASSED); | 1019 | SSLerror(s, SSL_R_NO_CIPHERS_PASSED); | 
| 1020 | goto f_err; | 1020 | goto f_err; | 
| 1021 | } | 1021 | } | 
| 1022 | ciphers = NULL; | 1022 | ciphers = NULL; | 
| @@ -1025,7 +1025,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1025 | 1025 | ||
| 1026 | if (c == NULL) { | 1026 | if (c == NULL) { | 
| 1027 | al = SSL_AD_HANDSHAKE_FAILURE; | 1027 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1028 | SSLerror(SSL_R_NO_SHARED_CIPHER); | 1028 | SSLerror(s, SSL_R_NO_SHARED_CIPHER); | 
| 1029 | goto f_err; | 1029 | goto f_err; | 
| 1030 | } | 1030 | } | 
| 1031 | S3I(s)->tmp.new_cipher = c; | 1031 | S3I(s)->tmp.new_cipher = c; | 
| @@ -1056,7 +1056,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1056 | 1056 | ||
| 1057 | /* Handles TLS extensions that we couldn't check earlier */ | 1057 | /* Handles TLS extensions that we couldn't check earlier */ | 
| 1058 | if (ssl_check_clienthello_tlsext_late(s) <= 0) { | 1058 | if (ssl_check_clienthello_tlsext_late(s) <= 0) { | 
| 1059 | SSLerror(SSL_R_CLIENTHELLO_TLSEXT); | 1059 | SSLerror(s, SSL_R_CLIENTHELLO_TLSEXT); | 
| 1060 | goto err; | 1060 | goto err; | 
| 1061 | } | 1061 | } | 
| 1062 | 1062 | ||
| @@ -1065,7 +1065,7 @@ ssl3_get_client_hello(SSL *s) | |||
| 1065 | if (0) { | 1065 | if (0) { | 
| 1066 | truncated: | 1066 | truncated: | 
| 1067 | al = SSL_AD_DECODE_ERROR; | 1067 | al = SSL_AD_DECODE_ERROR; | 
| 1068 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1068 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1069 | f_err: | 1069 | f_err: | 
| 1070 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1070 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 1071 | } | 1071 | } | 
| @@ -1124,7 +1124,7 @@ ssl3_send_server_hello(SSL *s) | |||
| 1124 | 1124 | ||
| 1125 | sl = s->session->session_id_length; | 1125 | sl = s->session->session_id_length; | 
| 1126 | if (sl > (int)sizeof(s->session->session_id)) { | 1126 | if (sl > (int)sizeof(s->session->session_id)) { | 
| 1127 | SSLerror(ERR_R_INTERNAL_ERROR); | 1127 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1128 | goto err; | 1128 | goto err; | 
| 1129 | } | 1129 | } | 
| 1130 | 1130 | ||
| @@ -1147,7 +1147,7 @@ ssl3_send_server_hello(SSL *s) | |||
| 1147 | 1147 | ||
| 1148 | if ((p = ssl_add_serverhello_tlsext(s, p + outlen, | 1148 | if ((p = ssl_add_serverhello_tlsext(s, p + outlen, | 
| 1149 | bufend)) == NULL) { | 1149 | bufend)) == NULL) { | 
| 1150 | SSLerror(ERR_R_INTERNAL_ERROR); | 1150 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1151 | goto err; | 1151 | goto err; | 
| 1152 | } | 1152 | } | 
| 1153 | 1153 | ||
| @@ -1188,7 +1188,7 @@ ssl3_send_server_kex_dhe(SSL *s, CBB *cbb) | |||
| 1188 | if (s->cert->dh_tmp_auto != 0) { | 1188 | if (s->cert->dh_tmp_auto != 0) { | 
| 1189 | if ((dhp = ssl_get_auto_dh(s)) == NULL) { | 1189 | if ((dhp = ssl_get_auto_dh(s)) == NULL) { | 
| 1190 | al = SSL_AD_INTERNAL_ERROR; | 1190 | al = SSL_AD_INTERNAL_ERROR; | 
| 1191 | SSLerror(ERR_R_INTERNAL_ERROR); | 1191 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1192 | goto f_err; | 1192 | goto f_err; | 
| 1193 | } | 1193 | } | 
| 1194 | } else | 1194 | } else | 
| @@ -1200,24 +1200,24 @@ ssl3_send_server_kex_dhe(SSL *s, CBB *cbb) | |||
| 1200 | 1200 | ||
| 1201 | if (dhp == NULL) { | 1201 | if (dhp == NULL) { | 
| 1202 | al = SSL_AD_HANDSHAKE_FAILURE; | 1202 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1203 | SSLerror(SSL_R_MISSING_TMP_DH_KEY); | 1203 | SSLerror(s, SSL_R_MISSING_TMP_DH_KEY); | 
| 1204 | goto f_err; | 1204 | goto f_err; | 
| 1205 | } | 1205 | } | 
| 1206 | 1206 | ||
| 1207 | if (S3I(s)->tmp.dh != NULL) { | 1207 | if (S3I(s)->tmp.dh != NULL) { | 
| 1208 | SSLerror(ERR_R_INTERNAL_ERROR); | 1208 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1209 | goto err; | 1209 | goto err; | 
| 1210 | } | 1210 | } | 
| 1211 | 1211 | ||
| 1212 | if (s->cert->dh_tmp_auto != 0) { | 1212 | if (s->cert->dh_tmp_auto != 0) { | 
| 1213 | dh = dhp; | 1213 | dh = dhp; | 
| 1214 | } else if ((dh = DHparams_dup(dhp)) == NULL) { | 1214 | } else if ((dh = DHparams_dup(dhp)) == NULL) { | 
| 1215 | SSLerror(ERR_R_DH_LIB); | 1215 | SSLerror(s, ERR_R_DH_LIB); | 
| 1216 | goto err; | 1216 | goto err; | 
| 1217 | } | 1217 | } | 
| 1218 | S3I(s)->tmp.dh = dh; | 1218 | S3I(s)->tmp.dh = dh; | 
| 1219 | if (!DH_generate_key(dh)) { | 1219 | if (!DH_generate_key(dh)) { | 
| 1220 | SSLerror(ERR_R_DH_LIB); | 1220 | SSLerror(s, ERR_R_DH_LIB); | 
| 1221 | goto err; | 1221 | goto err; | 
| 1222 | } | 1222 | } | 
| 1223 | 1223 | ||
| @@ -1276,12 +1276,12 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1276 | } | 1276 | } | 
| 1277 | if (ecdhp == NULL) { | 1277 | if (ecdhp == NULL) { | 
| 1278 | al = SSL_AD_HANDSHAKE_FAILURE; | 1278 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1279 | SSLerror(SSL_R_MISSING_TMP_ECDH_KEY); | 1279 | SSLerror(s, SSL_R_MISSING_TMP_ECDH_KEY); | 
| 1280 | goto f_err; | 1280 | goto f_err; | 
| 1281 | } | 1281 | } | 
| 1282 | 1282 | ||
| 1283 | if (S3I(s)->tmp.ecdh != NULL) { | 1283 | if (S3I(s)->tmp.ecdh != NULL) { | 
| 1284 | SSLerror(ERR_R_INTERNAL_ERROR); | 1284 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1285 | goto err; | 1285 | goto err; | 
| 1286 | } | 1286 | } | 
| 1287 | 1287 | ||
| @@ -1289,7 +1289,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1289 | if (s->cert->ecdh_tmp_auto != 0) { | 1289 | if (s->cert->ecdh_tmp_auto != 0) { | 
| 1290 | ecdh = ecdhp; | 1290 | ecdh = ecdhp; | 
| 1291 | } else if ((ecdh = EC_KEY_dup(ecdhp)) == NULL) { | 1291 | } else if ((ecdh = EC_KEY_dup(ecdhp)) == NULL) { | 
| 1292 | SSLerror(ERR_R_ECDH_LIB); | 1292 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 1293 | goto err; | 1293 | goto err; | 
| 1294 | } | 1294 | } | 
| 1295 | S3I(s)->tmp.ecdh = ecdh; | 1295 | S3I(s)->tmp.ecdh = ecdh; | 
| @@ -1298,7 +1298,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1298 | (EC_KEY_get0_private_key(ecdh) == NULL) || | 1298 | (EC_KEY_get0_private_key(ecdh) == NULL) || | 
| 1299 | (s->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 1299 | (s->internal->options & SSL_OP_SINGLE_ECDH_USE)) { | 
| 1300 | if (!EC_KEY_generate_key(ecdh)) { | 1300 | if (!EC_KEY_generate_key(ecdh)) { | 
| 1301 | SSLerror(ERR_R_ECDH_LIB); | 1301 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 1302 | goto err; | 1302 | goto err; | 
| 1303 | } | 1303 | } | 
| 1304 | } | 1304 | } | 
| @@ -1306,7 +1306,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1306 | if (((group = EC_KEY_get0_group(ecdh)) == NULL) || | 1306 | if (((group = EC_KEY_get0_group(ecdh)) == NULL) || | 
| 1307 | (EC_KEY_get0_public_key(ecdh) == NULL) || | 1307 | (EC_KEY_get0_public_key(ecdh) == NULL) || | 
| 1308 | (EC_KEY_get0_private_key(ecdh) == NULL)) { | 1308 | (EC_KEY_get0_private_key(ecdh) == NULL)) { | 
| 1309 | SSLerror(ERR_R_ECDH_LIB); | 1309 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 1310 | goto err; | 1310 | goto err; | 
| 1311 | } | 1311 | } | 
| 1312 | 1312 | ||
| @@ -1316,7 +1316,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1316 | */ | 1316 | */ | 
| 1317 | if ((curve_id = tls1_ec_nid2curve_id( | 1317 | if ((curve_id = tls1_ec_nid2curve_id( | 
| 1318 | EC_GROUP_get_curve_name(group))) == 0) { | 1318 | EC_GROUP_get_curve_name(group))) == 0) { | 
| 1319 | SSLerror(SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); | 1319 | SSLerror(s, SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); | 
| 1320 | goto err; | 1320 | goto err; | 
| 1321 | } | 1321 | } | 
| 1322 | 1322 | ||
| @@ -1331,7 +1331,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1331 | 1331 | ||
| 1332 | bn_ctx = BN_CTX_new(); | 1332 | bn_ctx = BN_CTX_new(); | 
| 1333 | if ((encodedPoint == NULL) || (bn_ctx == NULL)) { | 1333 | if ((encodedPoint == NULL) || (bn_ctx == NULL)) { | 
| 1334 | SSLerror(ERR_R_MALLOC_FAILURE); | 1334 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1335 | goto err; | 1335 | goto err; | 
| 1336 | } | 1336 | } | 
| 1337 | 1337 | ||
| @@ -1339,7 +1339,7 @@ ssl3_send_server_kex_ecdhe_ecp(SSL *s, int nid, CBB *cbb) | |||
| 1339 | POINT_CONVERSION_UNCOMPRESSED, encodedPoint, encodedlen, bn_ctx); | 1339 | POINT_CONVERSION_UNCOMPRESSED, encodedPoint, encodedlen, bn_ctx); | 
| 1340 | 1340 | ||
| 1341 | if (encodedlen == 0) { | 1341 | if (encodedlen == 0) { | 
| 1342 | SSLerror(ERR_R_ECDH_LIB); | 1342 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 1343 | goto err; | 1343 | goto err; | 
| 1344 | } | 1344 | } | 
| 1345 | 1345 | ||
| @@ -1391,7 +1391,7 @@ ssl3_send_server_kex_ecdhe_ecx(SSL *s, int nid, CBB *cbb) | |||
| 1391 | 1391 | ||
| 1392 | /* Generate an X25519 key pair. */ | 1392 | /* Generate an X25519 key pair. */ | 
| 1393 | if (S3I(s)->tmp.x25519 != NULL) { | 1393 | if (S3I(s)->tmp.x25519 != NULL) { | 
| 1394 | SSLerror(ERR_R_INTERNAL_ERROR); | 1394 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1395 | goto err; | 1395 | goto err; | 
| 1396 | } | 1396 | } | 
| 1397 | if ((S3I(s)->tmp.x25519 = malloc(X25519_KEY_LENGTH)) == NULL) | 1397 | if ((S3I(s)->tmp.x25519 = malloc(X25519_KEY_LENGTH)) == NULL) | 
| @@ -1402,7 +1402,7 @@ ssl3_send_server_kex_ecdhe_ecx(SSL *s, int nid, CBB *cbb) | |||
| 1402 | 1402 | ||
| 1403 | /* Serialize public key. */ | 1403 | /* Serialize public key. */ | 
| 1404 | if ((curve_id = tls1_ec_nid2curve_id(nid)) == 0) { | 1404 | if ((curve_id = tls1_ec_nid2curve_id(nid)) == 0) { | 
| 1405 | SSLerror(SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); | 1405 | SSLerror(s, SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); | 
| 1406 | goto err; | 1406 | goto err; | 
| 1407 | } | 1407 | } | 
| 1408 | 1408 | ||
| @@ -1477,7 +1477,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1477 | goto err; | 1477 | goto err; | 
| 1478 | } else { | 1478 | } else { | 
| 1479 | al = SSL_AD_HANDSHAKE_FAILURE; | 1479 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1480 | SSLerror(SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); | 1480 | SSLerror(s, SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); | 
| 1481 | goto f_err; | 1481 | goto f_err; | 
| 1482 | } | 1482 | } | 
| 1483 | 1483 | ||
| @@ -1498,7 +1498,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1498 | 1498 | ||
| 1499 | if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) + | 1499 | if (!BUF_MEM_grow_clean(buf, ssl3_handshake_msg_hdr_len(s) + | 
| 1500 | params_len + kn)) { | 1500 | params_len + kn)) { | 
| 1501 | SSLerror(ERR_LIB_BUF); | 1501 | SSLerror(s, ERR_LIB_BUF); | 
| 1502 | goto err; | 1502 | goto err; | 
| 1503 | } | 1503 | } | 
| 1504 | 1504 | ||
| @@ -1541,7 +1541,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1541 | } | 1541 | } | 
| 1542 | if (RSA_sign(NID_md5_sha1, md_buf, j, | 1542 | if (RSA_sign(NID_md5_sha1, md_buf, j, | 
| 1543 | &(p[2]), &u, pkey->pkey.rsa) <= 0) { | 1543 | &(p[2]), &u, pkey->pkey.rsa) <= 0) { | 
| 1544 | SSLerror(ERR_R_RSA_LIB); | 1544 | SSLerror(s, ERR_R_RSA_LIB); | 
| 1545 | goto err; | 1545 | goto err; | 
| 1546 | } | 1546 | } | 
| 1547 | s2n(u, p); | 1547 | s2n(u, p); | 
| @@ -1552,7 +1552,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1552 | if (!tls12_get_sigandhash(p, pkey, md)) { | 1552 | if (!tls12_get_sigandhash(p, pkey, md)) { | 
| 1553 | /* Should never happen */ | 1553 | /* Should never happen */ | 
| 1554 | al = SSL_AD_INTERNAL_ERROR; | 1554 | al = SSL_AD_INTERNAL_ERROR; | 
| 1555 | SSLerror(ERR_R_INTERNAL_ERROR); | 1555 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1556 | goto f_err; | 1556 | goto f_err; | 
| 1557 | } | 1557 | } | 
| 1558 | p += 2; | 1558 | p += 2; | 
| @@ -1567,7 +1567,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1567 | EVP_SignUpdate(&md_ctx, d, n); | 1567 | EVP_SignUpdate(&md_ctx, d, n); | 
| 1568 | if (!EVP_SignFinal(&md_ctx, &p[2], | 1568 | if (!EVP_SignFinal(&md_ctx, &p[2], | 
| 1569 | (unsigned int *)&i, pkey)) { | 1569 | (unsigned int *)&i, pkey)) { | 
| 1570 | SSLerror(ERR_R_EVP_LIB); | 1570 | SSLerror(s, ERR_R_EVP_LIB); | 
| 1571 | goto err; | 1571 | goto err; | 
| 1572 | } | 1572 | } | 
| 1573 | s2n(i, p); | 1573 | s2n(i, p); | 
| @@ -1577,7 +1577,7 @@ ssl3_send_server_key_exchange(SSL *s) | |||
| 1577 | } else { | 1577 | } else { | 
| 1578 | /* Is this error check actually needed? */ | 1578 | /* Is this error check actually needed? */ | 
| 1579 | al = SSL_AD_HANDSHAKE_FAILURE; | 1579 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1580 | SSLerror(SSL_R_UNKNOWN_PKEY_TYPE); | 1580 | SSLerror(s, SSL_R_UNKNOWN_PKEY_TYPE); | 
| 1581 | goto f_err; | 1581 | goto f_err; | 
| 1582 | } | 1582 | } | 
| 1583 | } | 1583 | } | 
| @@ -1643,7 +1643,7 @@ ssl3_send_certificate_request(SSL *s) | |||
| 1643 | if (!BUF_MEM_grow_clean(buf, | 1643 | if (!BUF_MEM_grow_clean(buf, | 
| 1644 | ssl3_handshake_msg_hdr_len(s) + n + j | 1644 | ssl3_handshake_msg_hdr_len(s) + n + j | 
| 1645 | + 2)) { | 1645 | + 2)) { | 
| 1646 | SSLerror(ERR_R_BUF_LIB); | 1646 | SSLerror(s, ERR_R_BUF_LIB); | 
| 1647 | goto err; | 1647 | goto err; | 
| 1648 | } | 1648 | } | 
| 1649 | p = ssl3_handshake_msg_start(s, | 1649 | p = ssl3_handshake_msg_start(s, | 
| @@ -1689,7 +1689,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1689 | if ((pkey == NULL) || (pkey->type != EVP_PKEY_RSA) || | 1689 | if ((pkey == NULL) || (pkey->type != EVP_PKEY_RSA) || | 
| 1690 | (pkey->pkey.rsa == NULL)) { | 1690 | (pkey->pkey.rsa == NULL)) { | 
| 1691 | al = SSL_AD_HANDSHAKE_FAILURE; | 1691 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1692 | SSLerror(SSL_R_MISSING_RSA_CERTIFICATE); | 1692 | SSLerror(s, SSL_R_MISSING_RSA_CERTIFICATE); | 
| 1693 | goto f_err; | 1693 | goto f_err; | 
| 1694 | } | 1694 | } | 
| 1695 | rsa = pkey->pkey.rsa; | 1695 | rsa = pkey->pkey.rsa; | 
| @@ -1698,7 +1698,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1698 | goto truncated; | 1698 | goto truncated; | 
| 1699 | n2s(p, i); | 1699 | n2s(p, i); | 
| 1700 | if (n != i + 2) { | 1700 | if (n != i + 2) { | 
| 1701 | SSLerror(SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG); | 1701 | SSLerror(s, SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG); | 
| 1702 | goto err; | 1702 | goto err; | 
| 1703 | } else | 1703 | } else | 
| 1704 | n = i; | 1704 | n = i; | 
| @@ -1711,7 +1711,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1711 | 1711 | ||
| 1712 | if (i != SSL_MAX_MASTER_KEY_LENGTH) { | 1712 | if (i != SSL_MAX_MASTER_KEY_LENGTH) { | 
| 1713 | al = SSL_AD_DECODE_ERROR; | 1713 | al = SSL_AD_DECODE_ERROR; | 
| 1714 | /* SSLerror(SSL_R_BAD_RSA_DECRYPT); */ | 1714 | /* SSLerror(s, SSL_R_BAD_RSA_DECRYPT); */ | 
| 1715 | } | 1715 | } | 
| 1716 | 1716 | ||
| 1717 | if (p - d + 2 > n) /* needed in the SSL3 case */ | 1717 | if (p - d + 2 > n) /* needed in the SSL3 case */ | 
| @@ -1733,7 +1733,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1733 | (p[0] == (s->version >> 8)) && | 1733 | (p[0] == (s->version >> 8)) && | 
| 1734 | (p[1] == (s->version & 0xff)))) { | 1734 | (p[1] == (s->version & 0xff)))) { | 
| 1735 | al = SSL_AD_DECODE_ERROR; | 1735 | al = SSL_AD_DECODE_ERROR; | 
| 1736 | /* SSLerror(SSL_R_BAD_PROTOCOL_VERSION_NUMBER); */ | 1736 | /* SSLerror(s, SSL_R_BAD_PROTOCOL_VERSION_NUMBER); */ | 
| 1737 | 1737 | ||
| 1738 | /* | 1738 | /* | 
| 1739 | * The Klima-Pokorny-Rosa extension of | 1739 | * The Klima-Pokorny-Rosa extension of | 
| @@ -1771,7 +1771,7 @@ ssl3_get_client_kex_rsa(SSL *s, unsigned char *p, long n) | |||
| 1771 | return (1); | 1771 | return (1); | 
| 1772 | truncated: | 1772 | truncated: | 
| 1773 | al = SSL_AD_DECODE_ERROR; | 1773 | al = SSL_AD_DECODE_ERROR; | 
| 1774 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1774 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1775 | f_err: | 1775 | f_err: | 
| 1776 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1776 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 1777 | err: | 1777 | err: | 
| @@ -1799,19 +1799,19 @@ ssl3_get_client_kex_dhe(SSL *s, unsigned char *p, long n) | |||
| 1799 | 1799 | ||
| 1800 | if (S3I(s)->tmp.dh == NULL) { | 1800 | if (S3I(s)->tmp.dh == NULL) { | 
| 1801 | al = SSL_AD_HANDSHAKE_FAILURE; | 1801 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1802 | SSLerror(SSL_R_MISSING_TMP_DH_KEY); | 1802 | SSLerror(s, SSL_R_MISSING_TMP_DH_KEY); | 
| 1803 | goto f_err; | 1803 | goto f_err; | 
| 1804 | } | 1804 | } | 
| 1805 | dh = S3I(s)->tmp.dh; | 1805 | dh = S3I(s)->tmp.dh; | 
| 1806 | 1806 | ||
| 1807 | if ((bn = BN_bin2bn(CBS_data(&dh_Yc), CBS_len(&dh_Yc), NULL)) == NULL) { | 1807 | if ((bn = BN_bin2bn(CBS_data(&dh_Yc), CBS_len(&dh_Yc), NULL)) == NULL) { | 
| 1808 | SSLerror(SSL_R_BN_LIB); | 1808 | SSLerror(s, SSL_R_BN_LIB); | 
| 1809 | goto err; | 1809 | goto err; | 
| 1810 | } | 1810 | } | 
| 1811 | 1811 | ||
| 1812 | key_size = DH_compute_key(p, bn, dh); | 1812 | key_size = DH_compute_key(p, bn, dh); | 
| 1813 | if (key_size <= 0) { | 1813 | if (key_size <= 0) { | 
| 1814 | SSLerror(ERR_R_DH_LIB); | 1814 | SSLerror(s, ERR_R_DH_LIB); | 
| 1815 | BN_clear_free(bn); | 1815 | BN_clear_free(bn); | 
| 1816 | goto err; | 1816 | goto err; | 
| 1817 | } | 1817 | } | 
| @@ -1831,7 +1831,7 @@ ssl3_get_client_kex_dhe(SSL *s, unsigned char *p, long n) | |||
| 1831 | 1831 | ||
| 1832 | truncated: | 1832 | truncated: | 
| 1833 | al = SSL_AD_DECODE_ERROR; | 1833 | al = SSL_AD_DECODE_ERROR; | 
| 1834 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 1834 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 1835 | f_err: | 1835 | f_err: | 
| 1836 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 1836 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 1837 | err: | 1837 | err: | 
| @@ -1855,7 +1855,7 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1855 | 1855 | ||
| 1856 | /* Initialize structures for server's ECDH key pair. */ | 1856 | /* Initialize structures for server's ECDH key pair. */ | 
| 1857 | if ((srvr_ecdh = EC_KEY_new()) == NULL) { | 1857 | if ((srvr_ecdh = EC_KEY_new()) == NULL) { | 
| 1858 | SSLerror(ERR_R_MALLOC_FAILURE); | 1858 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1859 | goto err; | 1859 | goto err; | 
| 1860 | } | 1860 | } | 
| 1861 | 1861 | ||
| @@ -1870,13 +1870,13 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1870 | 1870 | ||
| 1871 | if (!EC_KEY_set_group(srvr_ecdh, group) || | 1871 | if (!EC_KEY_set_group(srvr_ecdh, group) || | 
| 1872 | !EC_KEY_set_private_key(srvr_ecdh, priv_key)) { | 1872 | !EC_KEY_set_private_key(srvr_ecdh, priv_key)) { | 
| 1873 | SSLerror(ERR_R_EC_LIB); | 1873 | SSLerror(s, ERR_R_EC_LIB); | 
| 1874 | goto err; | 1874 | goto err; | 
| 1875 | } | 1875 | } | 
| 1876 | 1876 | ||
| 1877 | /* Let's get client's public key */ | 1877 | /* Let's get client's public key */ | 
| 1878 | if ((clnt_ecpoint = EC_POINT_new(group)) == NULL) { | 1878 | if ((clnt_ecpoint = EC_POINT_new(group)) == NULL) { | 
| 1879 | SSLerror(ERR_R_MALLOC_FAILURE); | 1879 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1880 | goto err; | 1880 | goto err; | 
| 1881 | } | 1881 | } | 
| 1882 | 1882 | ||
| @@ -1898,14 +1898,14 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1898 | * group. | 1898 | * group. | 
| 1899 | */ | 1899 | */ | 
| 1900 | al = SSL_AD_HANDSHAKE_FAILURE; | 1900 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1901 | SSLerror(SSL_R_UNABLE_TO_DECODE_ECDH_CERTS); | 1901 | SSLerror(s, SSL_R_UNABLE_TO_DECODE_ECDH_CERTS); | 
| 1902 | goto f_err; | 1902 | goto f_err; | 
| 1903 | } | 1903 | } | 
| 1904 | 1904 | ||
| 1905 | if (EC_POINT_copy(clnt_ecpoint, | 1905 | if (EC_POINT_copy(clnt_ecpoint, | 
| 1906 | EC_KEY_get0_public_key(clnt_pub_pkey->pkey.ec)) | 1906 | EC_KEY_get0_public_key(clnt_pub_pkey->pkey.ec)) | 
| 1907 | == 0) { | 1907 | == 0) { | 
| 1908 | SSLerror(ERR_R_EC_LIB); | 1908 | SSLerror(s, ERR_R_EC_LIB); | 
| 1909 | goto err; | 1909 | goto err; | 
| 1910 | } | 1910 | } | 
| 1911 | ret = 2; /* Skip certificate verify processing */ | 1911 | ret = 2; /* Skip certificate verify processing */ | 
| @@ -1915,7 +1915,7 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1915 | * in the ClientKeyExchange message. | 1915 | * in the ClientKeyExchange message. | 
| 1916 | */ | 1916 | */ | 
| 1917 | if ((bn_ctx = BN_CTX_new()) == NULL) { | 1917 | if ((bn_ctx = BN_CTX_new()) == NULL) { | 
| 1918 | SSLerror(ERR_R_MALLOC_FAILURE); | 1918 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1919 | goto err; | 1919 | goto err; | 
| 1920 | } | 1920 | } | 
| 1921 | 1921 | ||
| @@ -1924,12 +1924,12 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1924 | 1924 | ||
| 1925 | p += 1; | 1925 | p += 1; | 
| 1926 | if (n != 1 + i) { | 1926 | if (n != 1 + i) { | 
| 1927 | SSLerror(ERR_R_EC_LIB); | 1927 | SSLerror(s, ERR_R_EC_LIB); | 
| 1928 | goto err; | 1928 | goto err; | 
| 1929 | } | 1929 | } | 
| 1930 | if (EC_POINT_oct2point(group, | 1930 | if (EC_POINT_oct2point(group, | 
| 1931 | clnt_ecpoint, p, i, bn_ctx) == 0) { | 1931 | clnt_ecpoint, p, i, bn_ctx) == 0) { | 
| 1932 | SSLerror(ERR_R_EC_LIB); | 1932 | SSLerror(s, ERR_R_EC_LIB); | 
| 1933 | goto err; | 1933 | goto err; | 
| 1934 | } | 1934 | } | 
| 1935 | /* | 1935 | /* | 
| @@ -1942,13 +1942,13 @@ ssl3_get_client_kex_ecdhe_ecp(SSL *s, unsigned char *p, long n) | |||
| 1942 | /* Compute the shared pre-master secret */ | 1942 | /* Compute the shared pre-master secret */ | 
| 1943 | key_size = ECDH_size(srvr_ecdh); | 1943 | key_size = ECDH_size(srvr_ecdh); | 
| 1944 | if (key_size <= 0) { | 1944 | if (key_size <= 0) { | 
| 1945 | SSLerror(ERR_R_ECDH_LIB); | 1945 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 1946 | goto err; | 1946 | goto err; | 
| 1947 | } | 1947 | } | 
| 1948 | i = ECDH_compute_key(p, key_size, clnt_ecpoint, srvr_ecdh, | 1948 | i = ECDH_compute_key(p, key_size, clnt_ecpoint, srvr_ecdh, | 
| 1949 | NULL); | 1949 | NULL); | 
| 1950 | if (i <= 0) { | 1950 | if (i <= 0) { | 
| 1951 | SSLerror(ERR_R_ECDH_LIB); | 1951 | SSLerror(s, ERR_R_ECDH_LIB); | 
| 1952 | goto err; | 1952 | goto err; | 
| 1953 | } | 1953 | } | 
| 1954 | 1954 | ||
| @@ -2065,14 +2065,14 @@ ssl3_get_client_kex_gost(SSL *s, unsigned char *p, long n) | |||
| 2065 | if (ASN1_get_object((const unsigned char **)&p, &Tlen, &Ttag, | 2065 | if (ASN1_get_object((const unsigned char **)&p, &Tlen, &Ttag, | 
| 2066 | &Tclass, n) != V_ASN1_CONSTRUCTED || | 2066 | &Tclass, n) != V_ASN1_CONSTRUCTED || | 
| 2067 | Ttag != V_ASN1_SEQUENCE || Tclass != V_ASN1_UNIVERSAL) { | 2067 | Ttag != V_ASN1_SEQUENCE || Tclass != V_ASN1_UNIVERSAL) { | 
| 2068 | SSLerror(SSL_R_DECRYPTION_FAILED); | 2068 | SSLerror(s, SSL_R_DECRYPTION_FAILED); | 
| 2069 | goto gerr; | 2069 | goto gerr; | 
| 2070 | } | 2070 | } | 
| 2071 | start = p; | 2071 | start = p; | 
| 2072 | inlen = Tlen; | 2072 | inlen = Tlen; | 
| 2073 | if (EVP_PKEY_decrypt(pkey_ctx, premaster_secret, &outlen, | 2073 | if (EVP_PKEY_decrypt(pkey_ctx, premaster_secret, &outlen, | 
| 2074 | start, inlen) <=0) { | 2074 | start, inlen) <=0) { | 
| 2075 | SSLerror(SSL_R_DECRYPTION_FAILED); | 2075 | SSLerror(s, SSL_R_DECRYPTION_FAILED); | 
| 2076 | goto gerr; | 2076 | goto gerr; | 
| 2077 | } | 2077 | } | 
| 2078 | /* Generate master secret */ | 2078 | /* Generate master secret */ | 
| @@ -2095,7 +2095,7 @@ ssl3_get_client_kex_gost(SSL *s, unsigned char *p, long n) | |||
| 2095 | 2095 | ||
| 2096 | truncated: | 2096 | truncated: | 
| 2097 | al = SSL_AD_DECODE_ERROR; | 2097 | al = SSL_AD_DECODE_ERROR; | 
| 2098 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 2098 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 2099 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2099 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 2100 | err: | 2100 | err: | 
| 2101 | return (-1); | 2101 | return (-1); | 
| @@ -2133,7 +2133,7 @@ ssl3_get_client_key_exchange(SSL *s) | |||
| 2133 | goto err; | 2133 | goto err; | 
| 2134 | } else { | 2134 | } else { | 
| 2135 | al = SSL_AD_HANDSHAKE_FAILURE; | 2135 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 2136 | SSLerror(SSL_R_UNKNOWN_CIPHER_TYPE); | 2136 | SSLerror(s, SSL_R_UNKNOWN_CIPHER_TYPE); | 
| 2137 | goto f_err; | 2137 | goto f_err; | 
| 2138 | } | 2138 | } | 
| 2139 | 2139 | ||
| @@ -2176,7 +2176,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2176 | S3I(s)->tmp.reuse_message = 1; | 2176 | S3I(s)->tmp.reuse_message = 1; | 
| 2177 | if (peer != NULL) { | 2177 | if (peer != NULL) { | 
| 2178 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2178 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 2179 | SSLerror(SSL_R_MISSING_VERIFY_MESSAGE); | 2179 | SSLerror(s, SSL_R_MISSING_VERIFY_MESSAGE); | 
| 2180 | goto f_err; | 2180 | goto f_err; | 
| 2181 | } | 2181 | } | 
| 2182 | ret = 1; | 2182 | ret = 1; | 
| @@ -2184,19 +2184,19 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2184 | } | 2184 | } | 
| 2185 | 2185 | ||
| 2186 | if (peer == NULL) { | 2186 | if (peer == NULL) { | 
| 2187 | SSLerror(SSL_R_NO_CLIENT_CERT_RECEIVED); | 2187 | SSLerror(s, SSL_R_NO_CLIENT_CERT_RECEIVED); | 
| 2188 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2188 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 2189 | goto f_err; | 2189 | goto f_err; | 
| 2190 | } | 2190 | } | 
| 2191 | 2191 | ||
| 2192 | if (!(type & EVP_PKT_SIGN)) { | 2192 | if (!(type & EVP_PKT_SIGN)) { | 
| 2193 | SSLerror(SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE); | 2193 | SSLerror(s, SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE); | 
| 2194 | al = SSL_AD_ILLEGAL_PARAMETER; | 2194 | al = SSL_AD_ILLEGAL_PARAMETER; | 
| 2195 | goto f_err; | 2195 | goto f_err; | 
| 2196 | } | 2196 | } | 
| 2197 | 2197 | ||
| 2198 | if (S3I(s)->change_cipher_spec) { | 2198 | if (S3I(s)->change_cipher_spec) { | 
| 2199 | SSLerror(SSL_R_CCS_RECEIVED_EARLY); | 2199 | SSLerror(s, SSL_R_CCS_RECEIVED_EARLY); | 
| 2200 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2200 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 2201 | goto f_err; | 2201 | goto f_err; | 
| 2202 | } | 2202 | } | 
| @@ -2217,7 +2217,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2217 | int sigalg = tls12_get_sigid(pkey); | 2217 | int sigalg = tls12_get_sigid(pkey); | 
| 2218 | /* Should never happen */ | 2218 | /* Should never happen */ | 
| 2219 | if (sigalg == -1) { | 2219 | if (sigalg == -1) { | 
| 2220 | SSLerror(ERR_R_INTERNAL_ERROR); | 2220 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2221 | al = SSL_AD_INTERNAL_ERROR; | 2221 | al = SSL_AD_INTERNAL_ERROR; | 
| 2222 | goto f_err; | 2222 | goto f_err; | 
| 2223 | } | 2223 | } | 
| @@ -2225,13 +2225,13 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2225 | goto truncated; | 2225 | goto truncated; | 
| 2226 | /* Check key type is consistent with signature */ | 2226 | /* Check key type is consistent with signature */ | 
| 2227 | if (sigalg != (int)p[1]) { | 2227 | if (sigalg != (int)p[1]) { | 
| 2228 | SSLerror(SSL_R_WRONG_SIGNATURE_TYPE); | 2228 | SSLerror(s, SSL_R_WRONG_SIGNATURE_TYPE); | 
| 2229 | al = SSL_AD_DECODE_ERROR; | 2229 | al = SSL_AD_DECODE_ERROR; | 
| 2230 | goto f_err; | 2230 | goto f_err; | 
| 2231 | } | 2231 | } | 
| 2232 | md = tls12_get_hash(p[0]); | 2232 | md = tls12_get_hash(p[0]); | 
| 2233 | if (md == NULL) { | 2233 | if (md == NULL) { | 
| 2234 | SSLerror(SSL_R_UNKNOWN_DIGEST); | 2234 | SSLerror(s, SSL_R_UNKNOWN_DIGEST); | 
| 2235 | al = SSL_AD_DECODE_ERROR; | 2235 | al = SSL_AD_DECODE_ERROR; | 
| 2236 | goto f_err; | 2236 | goto f_err; | 
| 2237 | } | 2237 | } | 
| @@ -2247,7 +2247,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2247 | } | 2247 | } | 
| 2248 | j = EVP_PKEY_size(pkey); | 2248 | j = EVP_PKEY_size(pkey); | 
| 2249 | if ((i > j) || (n > j) || (n <= 0)) { | 2249 | if ((i > j) || (n > j) || (n <= 0)) { | 
| 2250 | SSLerror(SSL_R_WRONG_SIGNATURE_SIZE); | 2250 | SSLerror(s, SSL_R_WRONG_SIGNATURE_SIZE); | 
| 2251 | al = SSL_AD_DECODE_ERROR; | 2251 | al = SSL_AD_DECODE_ERROR; | 
| 2252 | goto f_err; | 2252 | goto f_err; | 
| 2253 | } | 2253 | } | 
| @@ -2257,20 +2257,20 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2257 | void *hdata; | 2257 | void *hdata; | 
| 2258 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 2258 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 
| 2259 | if (hdatalen <= 0) { | 2259 | if (hdatalen <= 0) { | 
| 2260 | SSLerror(ERR_R_INTERNAL_ERROR); | 2260 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2261 | al = SSL_AD_INTERNAL_ERROR; | 2261 | al = SSL_AD_INTERNAL_ERROR; | 
| 2262 | goto f_err; | 2262 | goto f_err; | 
| 2263 | } | 2263 | } | 
| 2264 | if (!EVP_VerifyInit_ex(&mctx, md, NULL) || | 2264 | if (!EVP_VerifyInit_ex(&mctx, md, NULL) || | 
| 2265 | !EVP_VerifyUpdate(&mctx, hdata, hdatalen)) { | 2265 | !EVP_VerifyUpdate(&mctx, hdata, hdatalen)) { | 
| 2266 | SSLerror(ERR_R_EVP_LIB); | 2266 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2267 | al = SSL_AD_INTERNAL_ERROR; | 2267 | al = SSL_AD_INTERNAL_ERROR; | 
| 2268 | goto f_err; | 2268 | goto f_err; | 
| 2269 | } | 2269 | } | 
| 2270 | 2270 | ||
| 2271 | if (EVP_VerifyFinal(&mctx, p, i, pkey) <= 0) { | 2271 | if (EVP_VerifyFinal(&mctx, p, i, pkey) <= 0) { | 
| 2272 | al = SSL_AD_DECRYPT_ERROR; | 2272 | al = SSL_AD_DECRYPT_ERROR; | 
| 2273 | SSLerror(SSL_R_BAD_SIGNATURE); | 2273 | SSLerror(s, SSL_R_BAD_SIGNATURE); | 
| 2274 | goto f_err; | 2274 | goto f_err; | 
| 2275 | } | 2275 | } | 
| 2276 | } else | 2276 | } else | 
| @@ -2280,12 +2280,12 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2280 | pkey->pkey.rsa); | 2280 | pkey->pkey.rsa); | 
| 2281 | if (i < 0) { | 2281 | if (i < 0) { | 
| 2282 | al = SSL_AD_DECRYPT_ERROR; | 2282 | al = SSL_AD_DECRYPT_ERROR; | 
| 2283 | SSLerror(SSL_R_BAD_RSA_DECRYPT); | 2283 | SSLerror(s, SSL_R_BAD_RSA_DECRYPT); | 
| 2284 | goto f_err; | 2284 | goto f_err; | 
| 2285 | } | 2285 | } | 
| 2286 | if (i == 0) { | 2286 | if (i == 0) { | 
| 2287 | al = SSL_AD_DECRYPT_ERROR; | 2287 | al = SSL_AD_DECRYPT_ERROR; | 
| 2288 | SSLerror(SSL_R_BAD_RSA_SIGNATURE); | 2288 | SSLerror(s, SSL_R_BAD_RSA_SIGNATURE); | 
| 2289 | goto f_err; | 2289 | goto f_err; | 
| 2290 | } | 2290 | } | 
| 2291 | } else | 2291 | } else | 
| @@ -2296,7 +2296,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2296 | if (j <= 0) { | 2296 | if (j <= 0) { | 
| 2297 | /* bad signature */ | 2297 | /* bad signature */ | 
| 2298 | al = SSL_AD_DECRYPT_ERROR; | 2298 | al = SSL_AD_DECRYPT_ERROR; | 
| 2299 | SSLerror(SSL_R_BAD_DSA_SIGNATURE); | 2299 | SSLerror(s, SSL_R_BAD_DSA_SIGNATURE); | 
| 2300 | goto f_err; | 2300 | goto f_err; | 
| 2301 | } | 2301 | } | 
| 2302 | } else | 2302 | } else | 
| @@ -2307,7 +2307,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2307 | if (j <= 0) { | 2307 | if (j <= 0) { | 
| 2308 | /* bad signature */ | 2308 | /* bad signature */ | 
| 2309 | al = SSL_AD_DECRYPT_ERROR; | 2309 | al = SSL_AD_DECRYPT_ERROR; | 
| 2310 | SSLerror(SSL_R_BAD_ECDSA_SIGNATURE); | 2310 | SSLerror(s, SSL_R_BAD_ECDSA_SIGNATURE); | 
| 2311 | goto f_err; | 2311 | goto f_err; | 
| 2312 | } | 2312 | } | 
| 2313 | } else | 2313 | } else | 
| @@ -2323,19 +2323,19 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2323 | 2323 | ||
| 2324 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 2324 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 
| 2325 | if (hdatalen <= 0) { | 2325 | if (hdatalen <= 0) { | 
| 2326 | SSLerror(ERR_R_INTERNAL_ERROR); | 2326 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2327 | al = SSL_AD_INTERNAL_ERROR; | 2327 | al = SSL_AD_INTERNAL_ERROR; | 
| 2328 | goto f_err; | 2328 | goto f_err; | 
| 2329 | } | 2329 | } | 
| 2330 | if (!EVP_PKEY_get_default_digest_nid(pkey, &nid) || | 2330 | if (!EVP_PKEY_get_default_digest_nid(pkey, &nid) || | 
| 2331 | !(md = EVP_get_digestbynid(nid))) { | 2331 | !(md = EVP_get_digestbynid(nid))) { | 
| 2332 | SSLerror(ERR_R_EVP_LIB); | 2332 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2333 | al = SSL_AD_INTERNAL_ERROR; | 2333 | al = SSL_AD_INTERNAL_ERROR; | 
| 2334 | goto f_err; | 2334 | goto f_err; | 
| 2335 | } | 2335 | } | 
| 2336 | pctx = EVP_PKEY_CTX_new(pkey, NULL); | 2336 | pctx = EVP_PKEY_CTX_new(pkey, NULL); | 
| 2337 | if (!pctx) { | 2337 | if (!pctx) { | 
| 2338 | SSLerror(ERR_R_EVP_LIB); | 2338 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2339 | al = SSL_AD_INTERNAL_ERROR; | 2339 | al = SSL_AD_INTERNAL_ERROR; | 
| 2340 | goto f_err; | 2340 | goto f_err; | 
| 2341 | } | 2341 | } | 
| @@ -2348,7 +2348,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2348 | EVP_PKEY_CTRL_GOST_SIG_FORMAT, | 2348 | EVP_PKEY_CTRL_GOST_SIG_FORMAT, | 
| 2349 | GOST_SIG_FORMAT_RS_LE, | 2349 | GOST_SIG_FORMAT_RS_LE, | 
| 2350 | NULL) <= 0)) { | 2350 | NULL) <= 0)) { | 
| 2351 | SSLerror(ERR_R_EVP_LIB); | 2351 | SSLerror(s, ERR_R_EVP_LIB); | 
| 2352 | al = SSL_AD_INTERNAL_ERROR; | 2352 | al = SSL_AD_INTERNAL_ERROR; | 
| 2353 | EVP_PKEY_CTX_free(pctx); | 2353 | EVP_PKEY_CTX_free(pctx); | 
| 2354 | goto f_err; | 2354 | goto f_err; | 
| @@ -2356,7 +2356,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2356 | 2356 | ||
| 2357 | if (EVP_PKEY_verify(pctx, p, i, signature, siglen) <= 0) { | 2357 | if (EVP_PKEY_verify(pctx, p, i, signature, siglen) <= 0) { | 
| 2358 | al = SSL_AD_DECRYPT_ERROR; | 2358 | al = SSL_AD_DECRYPT_ERROR; | 
| 2359 | SSLerror(SSL_R_BAD_SIGNATURE); | 2359 | SSLerror(s, SSL_R_BAD_SIGNATURE); | 
| 2360 | EVP_PKEY_CTX_free(pctx); | 2360 | EVP_PKEY_CTX_free(pctx); | 
| 2361 | goto f_err; | 2361 | goto f_err; | 
| 2362 | } | 2362 | } | 
| @@ -2365,7 +2365,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2365 | } else | 2365 | } else | 
| 2366 | #endif | 2366 | #endif | 
| 2367 | { | 2367 | { | 
| 2368 | SSLerror(ERR_R_INTERNAL_ERROR); | 2368 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2369 | al = SSL_AD_UNSUPPORTED_CERTIFICATE; | 2369 | al = SSL_AD_UNSUPPORTED_CERTIFICATE; | 
| 2370 | goto f_err; | 2370 | goto f_err; | 
| 2371 | } | 2371 | } | 
| @@ -2375,7 +2375,7 @@ ssl3_get_cert_verify(SSL *s) | |||
| 2375 | if (0) { | 2375 | if (0) { | 
| 2376 | truncated: | 2376 | truncated: | 
| 2377 | al = SSL_AD_DECODE_ERROR; | 2377 | al = SSL_AD_DECODE_ERROR; | 
| 2378 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 2378 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 2379 | f_err: | 2379 | f_err: | 
| 2380 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2380 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 2381 | } | 2381 | } | 
| @@ -2409,7 +2409,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2409 | if (S3I(s)->tmp.message_type == SSL3_MT_CLIENT_KEY_EXCHANGE) { | 2409 | if (S3I(s)->tmp.message_type == SSL3_MT_CLIENT_KEY_EXCHANGE) { | 
| 2410 | if ((s->verify_mode & SSL_VERIFY_PEER) && | 2410 | if ((s->verify_mode & SSL_VERIFY_PEER) && | 
| 2411 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { | 2411 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { | 
| 2412 | SSLerror(SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); | 2412 | SSLerror(s, SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); | 
| 2413 | al = SSL_AD_HANDSHAKE_FAILURE; | 2413 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 2414 | goto f_err; | 2414 | goto f_err; | 
| 2415 | } | 2415 | } | 
| @@ -2418,7 +2418,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2418 | * the client must return a 0 list. | 2418 | * the client must return a 0 list. | 
| 2419 | */ | 2419 | */ | 
| 2420 | if (S3I(s)->tmp.cert_request) { | 2420 | if (S3I(s)->tmp.cert_request) { | 
| 2421 | SSLerror(SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST | 2421 | SSLerror(s, SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST | 
| 2422 | ); | 2422 | ); | 
| 2423 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2423 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 2424 | goto f_err; | 2424 | goto f_err; | 
| @@ -2429,7 +2429,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2429 | 2429 | ||
| 2430 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE) { | 2430 | if (S3I(s)->tmp.message_type != SSL3_MT_CERTIFICATE) { | 
| 2431 | al = SSL_AD_UNEXPECTED_MESSAGE; | 2431 | al = SSL_AD_UNEXPECTED_MESSAGE; | 
| 2432 | SSLerror(SSL_R_WRONG_MESSAGE_TYPE); | 2432 | SSLerror(s, SSL_R_WRONG_MESSAGE_TYPE); | 
| 2433 | goto f_err; | 2433 | goto f_err; | 
| 2434 | } | 2434 | } | 
| 2435 | 2435 | ||
| @@ -2439,7 +2439,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2439 | CBS_init(&cbs, s->internal->init_msg, n); | 2439 | CBS_init(&cbs, s->internal->init_msg, n); | 
| 2440 | 2440 | ||
| 2441 | if ((sk = sk_X509_new_null()) == NULL) { | 2441 | if ((sk = sk_X509_new_null()) == NULL) { | 
| 2442 | SSLerror(ERR_R_MALLOC_FAILURE); | 2442 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2443 | goto err; | 2443 | goto err; | 
| 2444 | } | 2444 | } | 
| 2445 | 2445 | ||
| @@ -2452,23 +2452,23 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2452 | 2452 | ||
| 2453 | if (!CBS_get_u24_length_prefixed(&client_certs, &cert)) { | 2453 | if (!CBS_get_u24_length_prefixed(&client_certs, &cert)) { | 
| 2454 | al = SSL_AD_DECODE_ERROR; | 2454 | al = SSL_AD_DECODE_ERROR; | 
| 2455 | SSLerror(SSL_R_CERT_LENGTH_MISMATCH); | 2455 | SSLerror(s, SSL_R_CERT_LENGTH_MISMATCH); | 
| 2456 | goto f_err; | 2456 | goto f_err; | 
| 2457 | } | 2457 | } | 
| 2458 | 2458 | ||
| 2459 | q = CBS_data(&cert); | 2459 | q = CBS_data(&cert); | 
| 2460 | x = d2i_X509(NULL, &q, CBS_len(&cert)); | 2460 | x = d2i_X509(NULL, &q, CBS_len(&cert)); | 
| 2461 | if (x == NULL) { | 2461 | if (x == NULL) { | 
| 2462 | SSLerror(ERR_R_ASN1_LIB); | 2462 | SSLerror(s, ERR_R_ASN1_LIB); | 
| 2463 | goto err; | 2463 | goto err; | 
| 2464 | } | 2464 | } | 
| 2465 | if (q != CBS_data(&cert) + CBS_len(&cert)) { | 2465 | if (q != CBS_data(&cert) + CBS_len(&cert)) { | 
| 2466 | al = SSL_AD_DECODE_ERROR; | 2466 | al = SSL_AD_DECODE_ERROR; | 
| 2467 | SSLerror(SSL_R_CERT_LENGTH_MISMATCH); | 2467 | SSLerror(s, SSL_R_CERT_LENGTH_MISMATCH); | 
| 2468 | goto f_err; | 2468 | goto f_err; | 
| 2469 | } | 2469 | } | 
| 2470 | if (!sk_X509_push(sk, x)) { | 2470 | if (!sk_X509_push(sk, x)) { | 
| 2471 | SSLerror(ERR_R_MALLOC_FAILURE); | 2471 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2472 | goto err; | 2472 | goto err; | 
| 2473 | } | 2473 | } | 
| 2474 | x = NULL; | 2474 | x = NULL; | 
| @@ -2481,7 +2481,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2481 | */ | 2481 | */ | 
| 2482 | if ((s->verify_mode & SSL_VERIFY_PEER) && | 2482 | if ((s->verify_mode & SSL_VERIFY_PEER) && | 
| 2483 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { | 2483 | (s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) { | 
| 2484 | SSLerror(SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); | 2484 | SSLerror(s, SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE); | 
| 2485 | al = SSL_AD_HANDSHAKE_FAILURE; | 2485 | al = SSL_AD_HANDSHAKE_FAILURE; | 
| 2486 | goto f_err; | 2486 | goto f_err; | 
| 2487 | } | 2487 | } | 
| @@ -2494,7 +2494,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2494 | i = ssl_verify_cert_chain(s, sk); | 2494 | i = ssl_verify_cert_chain(s, sk); | 
| 2495 | if (i <= 0) { | 2495 | if (i <= 0) { | 
| 2496 | al = ssl_verify_alarm_type(s->verify_result); | 2496 | al = ssl_verify_alarm_type(s->verify_result); | 
| 2497 | SSLerror(SSL_R_NO_CERTIFICATE_RETURNED); | 2497 | SSLerror(s, SSL_R_NO_CERTIFICATE_RETURNED); | 
| 2498 | goto f_err; | 2498 | goto f_err; | 
| 2499 | } | 2499 | } | 
| 2500 | } | 2500 | } | 
| @@ -2510,7 +2510,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2510 | if (SSI(s)->sess_cert == NULL) { | 2510 | if (SSI(s)->sess_cert == NULL) { | 
| 2511 | SSI(s)->sess_cert = ssl_sess_cert_new(); | 2511 | SSI(s)->sess_cert = ssl_sess_cert_new(); | 
| 2512 | if (SSI(s)->sess_cert == NULL) { | 2512 | if (SSI(s)->sess_cert == NULL) { | 
| 2513 | SSLerror(ERR_R_MALLOC_FAILURE); | 2513 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2514 | goto err; | 2514 | goto err; | 
| 2515 | } | 2515 | } | 
| 2516 | } | 2516 | } | 
| @@ -2528,7 +2528,7 @@ ssl3_get_client_certificate(SSL *s) | |||
| 2528 | if (0) { | 2528 | if (0) { | 
| 2529 | truncated: | 2529 | truncated: | 
| 2530 | al = SSL_AD_DECODE_ERROR; | 2530 | al = SSL_AD_DECODE_ERROR; | 
| 2531 | SSLerror(SSL_R_BAD_PACKET_LENGTH); | 2531 | SSLerror(s, SSL_R_BAD_PACKET_LENGTH); | 
| 2532 | f_err: | 2532 | f_err: | 
| 2533 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 2533 | ssl3_send_alert(s, SSL3_AL_FATAL, al); | 
| 2534 | } | 2534 | } | 
| @@ -2553,7 +2553,7 @@ ssl3_send_server_certificate(SSL *s) | |||
| 2553 | 2553 | ||
| 2554 | if (s->internal->state == SSL3_ST_SW_CERT_A) { | 2554 | if (s->internal->state == SSL3_ST_SW_CERT_A) { | 
| 2555 | if ((x = ssl_get_server_send_cert(s)) == NULL) { | 2555 | if ((x = ssl_get_server_send_cert(s)) == NULL) { | 
| 2556 | SSLerror(ERR_R_INTERNAL_ERROR); | 2556 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 2557 | return (0); | 2557 | return (0); | 
| 2558 | } | 2558 | } | 
| 2559 | 2559 | ||
| @@ -2771,7 +2771,7 @@ ssl3_get_next_proto(SSL *s) | |||
| 2771 | * extension in their ClientHello | 2771 | * extension in their ClientHello | 
| 2772 | */ | 2772 | */ | 
| 2773 | if (!S3I(s)->next_proto_neg_seen) { | 2773 | if (!S3I(s)->next_proto_neg_seen) { | 
| 2774 | SSLerror(SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION); | 2774 | SSLerror(s, SSL_R_GOT_NEXT_PROTO_WITHOUT_EXTENSION); | 
| 2775 | return (-1); | 2775 | return (-1); | 
| 2776 | } | 2776 | } | 
| 2777 | 2777 | ||
| @@ -2787,7 +2787,7 @@ ssl3_get_next_proto(SSL *s) | |||
| 2787 | * by ssl3_get_finished). | 2787 | * by ssl3_get_finished). | 
| 2788 | */ | 2788 | */ | 
| 2789 | if (!S3I(s)->change_cipher_spec) { | 2789 | if (!S3I(s)->change_cipher_spec) { | 
| 2790 | SSLerror(SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS); | 2790 | SSLerror(s, SSL_R_GOT_NEXT_PROTO_BEFORE_A_CCS); | 
| 2791 | return (-1); | 2791 | return (-1); | 
| 2792 | } | 2792 | } | 
| 2793 | 2793 | ||
| @@ -2817,7 +2817,7 @@ ssl3_get_next_proto(SSL *s) | |||
| 2817 | s->internal->next_proto_negotiated_len = 0; | 2817 | s->internal->next_proto_negotiated_len = 0; | 
| 2818 | 2818 | ||
| 2819 | if (!CBS_stow(&proto, &s->internal->next_proto_negotiated, &len)) { | 2819 | if (!CBS_stow(&proto, &s->internal->next_proto_negotiated, &len)) { | 
| 2820 | SSLerror(ERR_R_MALLOC_FAILURE); | 2820 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 2821 | return (0); | 2821 | return (0); | 
| 2822 | } | 2822 | } | 
| 2823 | s->internal->next_proto_negotiated_len = (uint8_t)len; | 2823 | s->internal->next_proto_negotiated_len = (uint8_t)len; | 
| diff --git a/src/lib/libssl/ssl_txt.c b/src/lib/libssl/ssl_txt.c index f654d0b3a1..81ac493e6c 100644 --- a/src/lib/libssl/ssl_txt.c +++ b/src/lib/libssl/ssl_txt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_txt.c,v 1.27 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: ssl_txt.c,v 1.28 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -95,7 +95,7 @@ SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *x) | |||
| 95 | int ret; | 95 | int ret; | 
| 96 | 96 | ||
| 97 | if ((b = BIO_new(BIO_s_file_internal())) == NULL) { | 97 | if ((b = BIO_new(BIO_s_file_internal())) == NULL) { | 
| 98 | SSLerror(ERR_R_BUF_LIB); | 98 | SSLerrorx(ERR_R_BUF_LIB); | 
| 99 | return (0); | 99 | return (0); | 
| 100 | } | 100 | } | 
| 101 | BIO_set_fp(b, fp, BIO_NOCLOSE); | 101 | BIO_set_fp(b, fp, BIO_NOCLOSE); | 
| diff --git a/src/lib/libssl/t1_enc.c b/src/lib/libssl/t1_enc.c index 2ee521b073..85d28298bf 100644 --- a/src/lib/libssl/t1_enc.c +++ b/src/lib/libssl/t1_enc.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t1_enc.c,v 1.95 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: t1_enc.c,v 1.96 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -203,7 +203,7 @@ tls1_finish_mac(SSL *s, const unsigned char *buf, int len) | |||
| 203 | if (S3I(s)->handshake_dgst[i] == NULL) | 203 | if (S3I(s)->handshake_dgst[i] == NULL) | 
| 204 | continue; | 204 | continue; | 
| 205 | if (!EVP_DigestUpdate(S3I(s)->handshake_dgst[i], buf, len)) { | 205 | if (!EVP_DigestUpdate(S3I(s)->handshake_dgst[i], buf, len)) { | 
| 206 | SSLerror(ERR_R_EVP_LIB); | 206 | SSLerror(s, ERR_R_EVP_LIB); | 
| 207 | return 0; | 207 | return 0; | 
| 208 | } | 208 | } | 
| 209 | } | 209 | } | 
| @@ -223,12 +223,12 @@ tls1_digest_cached_records(SSL *s) | |||
| 223 | 223 | ||
| 224 | S3I(s)->handshake_dgst = calloc(SSL_MAX_DIGEST, sizeof(EVP_MD_CTX *)); | 224 | S3I(s)->handshake_dgst = calloc(SSL_MAX_DIGEST, sizeof(EVP_MD_CTX *)); | 
| 225 | if (S3I(s)->handshake_dgst == NULL) { | 225 | if (S3I(s)->handshake_dgst == NULL) { | 
| 226 | SSLerror(ERR_R_MALLOC_FAILURE); | 226 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 227 | goto err; | 227 | goto err; | 
| 228 | } | 228 | } | 
| 229 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 229 | hdatalen = BIO_get_mem_data(S3I(s)->handshake_buffer, &hdata); | 
| 230 | if (hdatalen <= 0) { | 230 | if (hdatalen <= 0) { | 
| 231 | SSLerror(SSL_R_BAD_HANDSHAKE_LENGTH); | 231 | SSLerror(s, SSL_R_BAD_HANDSHAKE_LENGTH); | 
| 232 | goto err; | 232 | goto err; | 
| 233 | } | 233 | } | 
| 234 | 234 | ||
| @@ -239,16 +239,16 @@ tls1_digest_cached_records(SSL *s) | |||
| 239 | 239 | ||
| 240 | S3I(s)->handshake_dgst[i] = EVP_MD_CTX_create(); | 240 | S3I(s)->handshake_dgst[i] = EVP_MD_CTX_create(); | 
| 241 | if (S3I(s)->handshake_dgst[i] == NULL) { | 241 | if (S3I(s)->handshake_dgst[i] == NULL) { | 
| 242 | SSLerror(ERR_R_MALLOC_FAILURE); | 242 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 243 | goto err; | 243 | goto err; | 
| 244 | } | 244 | } | 
| 245 | if (!EVP_DigestInit_ex(S3I(s)->handshake_dgst[i], md, NULL)) { | 245 | if (!EVP_DigestInit_ex(S3I(s)->handshake_dgst[i], md, NULL)) { | 
| 246 | SSLerror(ERR_R_EVP_LIB); | 246 | SSLerror(s, ERR_R_EVP_LIB); | 
| 247 | goto err; | 247 | goto err; | 
| 248 | } | 248 | } | 
| 249 | if (!EVP_DigestUpdate(S3I(s)->handshake_dgst[i], hdata, | 249 | if (!EVP_DigestUpdate(S3I(s)->handshake_dgst[i], hdata, | 
| 250 | hdatalen)) { | 250 | hdatalen)) { | 
| 251 | SSLerror(ERR_R_EVP_LIB); | 251 | SSLerror(s, ERR_R_EVP_LIB); | 
| 252 | goto err; | 252 | goto err; | 
| 253 | } | 253 | } | 
| 254 | } | 254 | } | 
| @@ -383,7 +383,7 @@ tls1_PRF(long digest_mask, const void *seed1, int seed1_len, const void *seed2, | |||
| 383 | count++; | 383 | count++; | 
| 384 | } | 384 | } | 
| 385 | if (count == 0) { | 385 | if (count == 0) { | 
| 386 | SSLerror(SSL_R_SSL_HANDSHAKE_FAILURE); | 386 | SSLerrorx(SSL_R_SSL_HANDSHAKE_FAILURE); | 
| 387 | goto err; | 387 | goto err; | 
| 388 | } | 388 | } | 
| 389 | len = slen / count; | 389 | len = slen / count; | 
| @@ -394,7 +394,7 @@ tls1_PRF(long digest_mask, const void *seed1, int seed1_len, const void *seed2, | |||
| 394 | for (idx = 0; ssl_get_handshake_digest(idx, &m, &md); idx++) { | 394 | for (idx = 0; ssl_get_handshake_digest(idx, &m, &md); idx++) { | 
| 395 | if ((m << TLS1_PRF_DGST_SHIFT) & digest_mask) { | 395 | if ((m << TLS1_PRF_DGST_SHIFT) & digest_mask) { | 
| 396 | if (!md) { | 396 | if (!md) { | 
| 397 | SSLerror(SSL_R_UNSUPPORTED_DIGEST_TYPE); | 397 | SSLerrorx(SSL_R_UNSUPPORTED_DIGEST_TYPE); | 
| 398 | goto err; | 398 | goto err; | 
| 399 | } | 399 | } | 
| 400 | if (!tls1_P_hash(md , S1, len + (slen&1), seed1, | 400 | if (!tls1_P_hash(md , S1, len + (slen&1), seed1, | 
| @@ -442,7 +442,7 @@ tls1_aead_ctx_init(SSL_AEAD_CTX **aead_ctx) | |||
| 442 | 442 | ||
| 443 | *aead_ctx = malloc(sizeof(SSL_AEAD_CTX)); | 443 | *aead_ctx = malloc(sizeof(SSL_AEAD_CTX)); | 
| 444 | if (*aead_ctx == NULL) { | 444 | if (*aead_ctx == NULL) { | 
| 445 | SSLerror(ERR_R_MALLOC_FAILURE); | 445 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 446 | return (0); | 446 | return (0); | 
| 447 | } | 447 | } | 
| 448 | 448 | ||
| @@ -470,7 +470,7 @@ tls1_change_cipher_state_aead(SSL *s, char is_read, const unsigned char *key, | |||
| 470 | EVP_AEAD_DEFAULT_TAG_LENGTH, NULL)) | 470 | EVP_AEAD_DEFAULT_TAG_LENGTH, NULL)) | 
| 471 | return (0); | 471 | return (0); | 
| 472 | if (iv_len > sizeof(aead_ctx->fixed_nonce)) { | 472 | if (iv_len > sizeof(aead_ctx->fixed_nonce)) { | 
| 473 | SSLerror(ERR_R_INTERNAL_ERROR); | 473 | SSLerrorx(ERR_R_INTERNAL_ERROR); | 
| 474 | return (0); | 474 | return (0); | 
| 475 | } | 475 | } | 
| 476 | memcpy(aead_ctx->fixed_nonce, iv, iv_len); | 476 | memcpy(aead_ctx->fixed_nonce, iv, iv_len); | 
| @@ -486,13 +486,13 @@ tls1_change_cipher_state_aead(SSL *s, char is_read, const unsigned char *key, | |||
| 486 | if (aead_ctx->xor_fixed_nonce) { | 486 | if (aead_ctx->xor_fixed_nonce) { | 
| 487 | if (aead_ctx->fixed_nonce_len != EVP_AEAD_nonce_length(aead) || | 487 | if (aead_ctx->fixed_nonce_len != EVP_AEAD_nonce_length(aead) || | 
| 488 | aead_ctx->variable_nonce_len > EVP_AEAD_nonce_length(aead)) { | 488 | aead_ctx->variable_nonce_len > EVP_AEAD_nonce_length(aead)) { | 
| 489 | SSLerror(ERR_R_INTERNAL_ERROR); | 489 | SSLerrorx(ERR_R_INTERNAL_ERROR); | 
| 490 | return (0); | 490 | return (0); | 
| 491 | } | 491 | } | 
| 492 | } else { | 492 | } else { | 
| 493 | if (aead_ctx->variable_nonce_len + aead_ctx->fixed_nonce_len != | 493 | if (aead_ctx->variable_nonce_len + aead_ctx->fixed_nonce_len != | 
| 494 | EVP_AEAD_nonce_length(aead)) { | 494 | EVP_AEAD_nonce_length(aead)) { | 
| 495 | SSLerror(ERR_R_INTERNAL_ERROR); | 495 | SSLerrorx(ERR_R_INTERNAL_ERROR); | 
| 496 | return (0); | 496 | return (0); | 
| 497 | } | 497 | } | 
| 498 | } | 498 | } | 
| @@ -603,7 +603,7 @@ tls1_change_cipher_state_cipher(SSL *s, char is_read, char use_client_keys, | |||
| 603 | return (1); | 603 | return (1); | 
| 604 | 604 | ||
| 605 | err: | 605 | err: | 
| 606 | SSLerror(ERR_R_MALLOC_FAILURE); | 606 | SSLerrorx(ERR_R_MALLOC_FAILURE); | 
| 607 | return (0); | 607 | return (0); | 
| 608 | } | 608 | } | 
| 609 | 609 | ||
| @@ -688,7 +688,7 @@ tls1_change_cipher_state(SSL *s, int which) | |||
| 688 | } | 688 | } | 
| 689 | 689 | ||
| 690 | if (key_block - S3I(s)->tmp.key_block != S3I(s)->tmp.key_block_length) { | 690 | if (key_block - S3I(s)->tmp.key_block != S3I(s)->tmp.key_block_length) { | 
| 691 | SSLerror(ERR_R_INTERNAL_ERROR); | 691 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 692 | goto err2; | 692 | goto err2; | 
| 693 | } | 693 | } | 
| 694 | 694 | ||
| @@ -729,7 +729,7 @@ tls1_setup_key_block(SSL *s) | |||
| 729 | if (s->session->cipher && | 729 | if (s->session->cipher && | 
| 730 | (s->session->cipher->algorithm2 & SSL_CIPHER_ALGORITHM2_AEAD)) { | 730 | (s->session->cipher->algorithm2 & SSL_CIPHER_ALGORITHM2_AEAD)) { | 
| 731 | if (!ssl_cipher_get_evp_aead(s->session, &aead)) { | 731 | if (!ssl_cipher_get_evp_aead(s->session, &aead)) { | 
| 732 | SSLerror(SSL_R_CIPHER_OR_HASH_UNAVAILABLE); | 732 | SSLerror(s, SSL_R_CIPHER_OR_HASH_UNAVAILABLE); | 
| 733 | return (0); | 733 | return (0); | 
| 734 | } | 734 | } | 
| 735 | key_len = EVP_AEAD_key_length(aead); | 735 | key_len = EVP_AEAD_key_length(aead); | 
| @@ -737,7 +737,7 @@ tls1_setup_key_block(SSL *s) | |||
| 737 | } else { | 737 | } else { | 
| 738 | if (!ssl_cipher_get_evp(s->session, &cipher, &mac, &mac_type, | 738 | if (!ssl_cipher_get_evp(s->session, &cipher, &mac, &mac_type, | 
| 739 | &mac_secret_size)) { | 739 | &mac_secret_size)) { | 
| 740 | SSLerror(SSL_R_CIPHER_OR_HASH_UNAVAILABLE); | 740 | SSLerror(s, SSL_R_CIPHER_OR_HASH_UNAVAILABLE); | 
| 741 | return (0); | 741 | return (0); | 
| 742 | } | 742 | } | 
| 743 | key_len = EVP_CIPHER_key_length(cipher); | 743 | key_len = EVP_CIPHER_key_length(cipher); | 
| @@ -758,7 +758,7 @@ tls1_setup_key_block(SSL *s) | |||
| 758 | 758 | ||
| 759 | if ((key_block = reallocarray(NULL, mac_secret_size + key_len + iv_len, | 759 | if ((key_block = reallocarray(NULL, mac_secret_size + key_len + iv_len, | 
| 760 | 2)) == NULL) { | 760 | 2)) == NULL) { | 
| 761 | SSLerror(ERR_R_MALLOC_FAILURE); | 761 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 762 | goto err; | 762 | goto err; | 
| 763 | } | 763 | } | 
| 764 | key_block_len = (mac_secret_size + key_len + iv_len) * 2; | 764 | key_block_len = (mac_secret_size + key_len + iv_len) * 2; | 
| @@ -767,7 +767,7 @@ tls1_setup_key_block(SSL *s) | |||
| 767 | S3I(s)->tmp.key_block = key_block; | 767 | S3I(s)->tmp.key_block = key_block; | 
| 768 | 768 | ||
| 769 | if ((tmp_block = malloc(key_block_len)) == NULL) { | 769 | if ((tmp_block = malloc(key_block_len)) == NULL) { | 
| 770 | SSLerror(ERR_R_MALLOC_FAILURE); | 770 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 771 | goto err; | 771 | goto err; | 
| 772 | } | 772 | } | 
| 773 | 773 | ||
| @@ -1105,7 +1105,7 @@ tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *out) | |||
| 1105 | } | 1105 | } | 
| 1106 | } | 1106 | } | 
| 1107 | if (d == NULL) { | 1107 | if (d == NULL) { | 
| 1108 | SSLerror(SSL_R_NO_REQUIRED_DIGEST); | 1108 | SSLerror(s, SSL_R_NO_REQUIRED_DIGEST); | 
| 1109 | return 0; | 1109 | return 0; | 
| 1110 | } | 1110 | } | 
| 1111 | 1111 | ||
| @@ -1336,11 +1336,11 @@ tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen, | |||
| 1336 | 1336 | ||
| 1337 | goto ret; | 1337 | goto ret; | 
| 1338 | err1: | 1338 | err1: | 
| 1339 | SSLerror(SSL_R_TLS_ILLEGAL_EXPORTER_LABEL); | 1339 | SSLerror(s, SSL_R_TLS_ILLEGAL_EXPORTER_LABEL); | 
| 1340 | rv = 0; | 1340 | rv = 0; | 
| 1341 | goto ret; | 1341 | goto ret; | 
| 1342 | err2: | 1342 | err2: | 
| 1343 | SSLerror(ERR_R_MALLOC_FAILURE); | 1343 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 
| 1344 | rv = 0; | 1344 | rv = 0; | 
| 1345 | ret: | 1345 | ret: | 
| 1346 | free(buff); | 1346 | free(buff); | 
| diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c index 2e9d31112d..a42e414dec 100644 --- a/src/lib/libssl/t1_lib.c +++ b/src/lib/libssl/t1_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t1_lib.c,v 1.114 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: t1_lib.c,v 1.115 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -742,7 +742,7 @@ ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 742 | int el; | 742 | int el; | 
| 743 | 743 | ||
| 744 | if (!ssl_add_clienthello_renegotiate_ext(s, 0, &el, 0)) { | 744 | if (!ssl_add_clienthello_renegotiate_ext(s, 0, &el, 0)) { | 
| 745 | SSLerror(ERR_R_INTERNAL_ERROR); | 745 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 746 | return NULL; | 746 | return NULL; | 
| 747 | } | 747 | } | 
| 748 | 748 | ||
| @@ -753,7 +753,7 @@ ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 753 | s2n(el, ret); | 753 | s2n(el, ret); | 
| 754 | 754 | ||
| 755 | if (!ssl_add_clienthello_renegotiate_ext(s, ret, &el, el)) { | 755 | if (!ssl_add_clienthello_renegotiate_ext(s, ret, &el, el)) { | 
| 756 | SSLerror(ERR_R_INTERNAL_ERROR); | 756 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 757 | return NULL; | 757 | return NULL; | 
| 758 | } | 758 | } | 
| 759 | 759 | ||
| @@ -778,7 +778,7 @@ ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 778 | if (formatslen > lenmax) | 778 | if (formatslen > lenmax) | 
| 779 | return NULL; | 779 | return NULL; | 
| 780 | if (formatslen > 255) { | 780 | if (formatslen > 255) { | 
| 781 | SSLerror(ERR_R_INTERNAL_ERROR); | 781 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 782 | return NULL; | 782 | return NULL; | 
| 783 | } | 783 | } | 
| 784 | 784 | ||
| @@ -800,7 +800,7 @@ ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 800 | if (curveslen * 2 > lenmax) | 800 | if (curveslen * 2 > lenmax) | 
| 801 | return NULL; | 801 | return NULL; | 
| 802 | if (curveslen * 2 > 65532) { | 802 | if (curveslen * 2 > 65532) { | 
| 803 | SSLerror(ERR_R_INTERNAL_ERROR); | 803 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 804 | return NULL; | 804 | return NULL; | 
| 805 | } | 805 | } | 
| 806 | 806 | ||
| @@ -942,7 +942,7 @@ skip_ext: | |||
| 942 | s2n(el, ret); | 942 | s2n(el, ret); | 
| 943 | 943 | ||
| 944 | if (ssl_add_clienthello_use_srtp_ext(s, ret, &el, el)) { | 944 | if (ssl_add_clienthello_use_srtp_ext(s, ret, &el, el)) { | 
| 945 | SSLerror(ERR_R_INTERNAL_ERROR); | 945 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 946 | return NULL; | 946 | return NULL; | 
| 947 | } | 947 | } | 
| 948 | ret += el; | 948 | ret += el; | 
| @@ -1020,7 +1020,7 @@ ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 1020 | int el; | 1020 | int el; | 
| 1021 | 1021 | ||
| 1022 | if (!ssl_add_serverhello_renegotiate_ext(s, 0, &el, 0)) { | 1022 | if (!ssl_add_serverhello_renegotiate_ext(s, 0, &el, 0)) { | 
| 1023 | SSLerror(ERR_R_INTERNAL_ERROR); | 1023 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1024 | return NULL; | 1024 | return NULL; | 
| 1025 | } | 1025 | } | 
| 1026 | 1026 | ||
| @@ -1031,7 +1031,7 @@ ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 1031 | s2n(el, ret); | 1031 | s2n(el, ret); | 
| 1032 | 1032 | ||
| 1033 | if (!ssl_add_serverhello_renegotiate_ext(s, ret, &el, el)) { | 1033 | if (!ssl_add_serverhello_renegotiate_ext(s, ret, &el, el)) { | 
| 1034 | SSLerror(ERR_R_INTERNAL_ERROR); | 1034 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1035 | return NULL; | 1035 | return NULL; | 
| 1036 | } | 1036 | } | 
| 1037 | 1037 | ||
| @@ -1054,7 +1054,7 @@ ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 1054 | if (formatslen > lenmax) | 1054 | if (formatslen > lenmax) | 
| 1055 | return NULL; | 1055 | return NULL; | 
| 1056 | if (formatslen > 255) { | 1056 | if (formatslen > 255) { | 
| 1057 | SSLerror(ERR_R_INTERNAL_ERROR); | 1057 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1058 | return NULL; | 1058 | return NULL; | 
| 1059 | } | 1059 | } | 
| 1060 | 1060 | ||
| @@ -1100,7 +1100,7 @@ ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) | |||
| 1100 | s2n(el, ret); | 1100 | s2n(el, ret); | 
| 1101 | 1101 | ||
| 1102 | if (ssl_add_serverhello_use_srtp_ext(s, ret, &el, el)) { | 1102 | if (ssl_add_serverhello_use_srtp_ext(s, ret, &el, el)) { | 
| 1103 | SSLerror(ERR_R_INTERNAL_ERROR); | 1103 | SSLerror(s, ERR_R_INTERNAL_ERROR); | 
| 1104 | return NULL; | 1104 | return NULL; | 
| 1105 | } | 1105 | } | 
| 1106 | ret += el; | 1106 | ret += el; | 
| @@ -1618,7 +1618,7 @@ ri_check: | |||
| 1618 | 1618 | ||
| 1619 | if (!renegotiate_seen && s->internal->renegotiate) { | 1619 | if (!renegotiate_seen && s->internal->renegotiate) { | 
| 1620 | *al = SSL_AD_HANDSHAKE_FAILURE; | 1620 | *al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1621 | SSLerror(SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 1621 | SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 
| 1622 | return 0; | 1622 | return 0; | 
| 1623 | } | 1623 | } | 
| 1624 | 1624 | ||
| @@ -1870,7 +1870,7 @@ ri_check: | |||
| 1870 | if (!renegotiate_seen && | 1870 | if (!renegotiate_seen && | 
| 1871 | !(s->internal->options & SSL_OP_LEGACY_SERVER_CONNECT)) { | 1871 | !(s->internal->options & SSL_OP_LEGACY_SERVER_CONNECT)) { | 
| 1872 | *al = SSL_AD_HANDSHAKE_FAILURE; | 1872 | *al = SSL_AD_HANDSHAKE_FAILURE; | 
| 1873 | SSLerror(SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 1873 | SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); | 
| 1874 | return 0; | 1874 | return 0; | 
| 1875 | } | 1875 | } | 
| 1876 | 1876 | ||
| @@ -2005,7 +2005,7 @@ ssl_check_serverhello_tlsext(SSL *s) | |||
| 2005 | } | 2005 | } | 
| 2006 | } | 2006 | } | 
| 2007 | if (!found_uncompressed) { | 2007 | if (!found_uncompressed) { | 
| 2008 | SSLerror(SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST); | 2008 | SSLerror(s, SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST); | 
| 2009 | return -1; | 2009 | return -1; | 
| 2010 | } | 2010 | } | 
| 2011 | } | 2011 | } | 
| diff --git a/src/lib/libssl/t1_reneg.c b/src/lib/libssl/t1_reneg.c index 596b96edd3..4e194dd5df 100644 --- a/src/lib/libssl/t1_reneg.c +++ b/src/lib/libssl/t1_reneg.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t1_reneg.c,v 1.14 2017/01/26 12:16:13 beck Exp $ */ | 1 | /* $OpenBSD: t1_reneg.c,v 1.15 2017/02/07 02:08:38 beck Exp $ */ | 
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 
| 3 | * All rights reserved. | 3 | * All rights reserved. | 
| 4 | * | 4 | * | 
| @@ -123,7 +123,7 @@ ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, int *len, | |||
| 123 | { | 123 | { | 
| 124 | if (p) { | 124 | if (p) { | 
| 125 | if ((S3I(s)->previous_client_finished_len + 1) > maxlen) { | 125 | if ((S3I(s)->previous_client_finished_len + 1) > maxlen) { | 
| 126 | SSLerror(SSL_R_RENEGOTIATE_EXT_TOO_LONG); | 126 | SSLerror(s, SSL_R_RENEGOTIATE_EXT_TOO_LONG); | 
| 127 | return 0; | 127 | return 0; | 
| 128 | } | 128 | } | 
| 129 | 129 | ||
| @@ -150,7 +150,7 @@ ssl_parse_clienthello_renegotiate_ext(SSL *s, const unsigned char *d, int len, | |||
| 150 | CBS cbs, reneg; | 150 | CBS cbs, reneg; | 
| 151 | 151 | ||
| 152 | if (len < 0) { | 152 | if (len < 0) { | 
| 153 | SSLerror(SSL_R_RENEGOTIATION_ENCODING_ERR); | 153 | SSLerror(s, SSL_R_RENEGOTIATION_ENCODING_ERR); | 
| 154 | *al = SSL_AD_ILLEGAL_PARAMETER; | 154 | *al = SSL_AD_ILLEGAL_PARAMETER; | 
| 155 | return 0; | 155 | return 0; | 
| 156 | } | 156 | } | 
| @@ -159,21 +159,21 @@ ssl_parse_clienthello_renegotiate_ext(SSL *s, const unsigned char *d, int len, | |||
| 159 | if (!CBS_get_u8_length_prefixed(&cbs, &reneg) || | 159 | if (!CBS_get_u8_length_prefixed(&cbs, &reneg) || | 
| 160 | /* Consistency check */ | 160 | /* Consistency check */ | 
| 161 | CBS_len(&cbs) != 0) { | 161 | CBS_len(&cbs) != 0) { | 
| 162 | SSLerror(SSL_R_RENEGOTIATION_ENCODING_ERR); | 162 | SSLerror(s, SSL_R_RENEGOTIATION_ENCODING_ERR); | 
| 163 | *al = SSL_AD_ILLEGAL_PARAMETER; | 163 | *al = SSL_AD_ILLEGAL_PARAMETER; | 
| 164 | return 0; | 164 | return 0; | 
| 165 | } | 165 | } | 
| 166 | 166 | ||
| 167 | /* Check that the extension matches */ | 167 | /* Check that the extension matches */ | 
| 168 | if (CBS_len(&reneg) != S3I(s)->previous_client_finished_len) { | 168 | if (CBS_len(&reneg) != S3I(s)->previous_client_finished_len) { | 
| 169 | SSLerror(SSL_R_RENEGOTIATION_MISMATCH); | 169 | SSLerror(s, SSL_R_RENEGOTIATION_MISMATCH); | 
| 170 | *al = SSL_AD_HANDSHAKE_FAILURE; | 170 | *al = SSL_AD_HANDSHAKE_FAILURE; | 
| 171 | return 0; | 171 | return 0; | 
| 172 | } | 172 | } | 
| 173 | 173 | ||
| 174 | if (!CBS_mem_equal(&reneg, S3I(s)->previous_client_finished, | 174 | if (!CBS_mem_equal(&reneg, S3I(s)->previous_client_finished, | 
| 175 | S3I(s)->previous_client_finished_len)) { | 175 | S3I(s)->previous_client_finished_len)) { | 
| 176 | SSLerror(SSL_R_RENEGOTIATION_MISMATCH); | 176 | SSLerror(s, SSL_R_RENEGOTIATION_MISMATCH); | 
| 177 | *al = SSL_AD_HANDSHAKE_FAILURE; | 177 | *al = SSL_AD_HANDSHAKE_FAILURE; | 
| 178 | return 0; | 178 | return 0; | 
| 179 | } | 179 | } | 
| @@ -191,7 +191,7 @@ ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, int *len, | |||
| 191 | if (p) { | 191 | if (p) { | 
| 192 | if ((S3I(s)->previous_client_finished_len + | 192 | if ((S3I(s)->previous_client_finished_len + | 
| 193 | S3I(s)->previous_server_finished_len + 1) > maxlen) { | 193 | S3I(s)->previous_server_finished_len + 1) > maxlen) { | 
| 194 | SSLerror(SSL_R_RENEGOTIATE_EXT_TOO_LONG); | 194 | SSLerror(s, SSL_R_RENEGOTIATE_EXT_TOO_LONG); | 
| 195 | return 0; | 195 | return 0; | 
| 196 | } | 196 | } | 
| 197 | 197 | ||
| @@ -229,7 +229,7 @@ ssl_parse_serverhello_renegotiate_ext(SSL *s, const unsigned char *d, int len, i | |||
| 229 | OPENSSL_assert(!expected_len || S3I(s)->previous_server_finished_len); | 229 | OPENSSL_assert(!expected_len || S3I(s)->previous_server_finished_len); | 
| 230 | 230 | ||
| 231 | if (len < 0) { | 231 | if (len < 0) { | 
| 232 | SSLerror(SSL_R_RENEGOTIATION_ENCODING_ERR); | 232 | SSLerror(s, SSL_R_RENEGOTIATION_ENCODING_ERR); | 
| 233 | *al = SSL_AD_ILLEGAL_PARAMETER; | 233 | *al = SSL_AD_ILLEGAL_PARAMETER; | 
| 234 | return 0; | 234 | return 0; | 
| 235 | } | 235 | } | 
| @@ -239,7 +239,7 @@ ssl_parse_serverhello_renegotiate_ext(SSL *s, const unsigned char *d, int len, i | |||
| 239 | if (!CBS_get_u8_length_prefixed(&cbs, &reneg) || | 239 | if (!CBS_get_u8_length_prefixed(&cbs, &reneg) || | 
| 240 | /* Consistency check */ | 240 | /* Consistency check */ | 
| 241 | CBS_len(&cbs) != 0) { | 241 | CBS_len(&cbs) != 0) { | 
| 242 | SSLerror(SSL_R_RENEGOTIATION_ENCODING_ERR); | 242 | SSLerror(s, SSL_R_RENEGOTIATION_ENCODING_ERR); | 
| 243 | *al = SSL_AD_ILLEGAL_PARAMETER; | 243 | *al = SSL_AD_ILLEGAL_PARAMETER; | 
| 244 | return 0; | 244 | return 0; | 
| 245 | } | 245 | } | 
| @@ -251,20 +251,20 @@ ssl_parse_serverhello_renegotiate_ext(SSL *s, const unsigned char *d, int len, i | |||
| 251 | !CBS_get_bytes(&reneg, &previous_server, | 251 | !CBS_get_bytes(&reneg, &previous_server, | 
| 252 | S3I(s)->previous_server_finished_len) || | 252 | S3I(s)->previous_server_finished_len) || | 
| 253 | CBS_len(&reneg) != 0) { | 253 | CBS_len(&reneg) != 0) { | 
| 254 | SSLerror(SSL_R_RENEGOTIATION_MISMATCH); | 254 | SSLerror(s, SSL_R_RENEGOTIATION_MISMATCH); | 
| 255 | *al = SSL_AD_HANDSHAKE_FAILURE; | 255 | *al = SSL_AD_HANDSHAKE_FAILURE; | 
| 256 | return 0; | 256 | return 0; | 
| 257 | } | 257 | } | 
| 258 | 258 | ||
| 259 | if (!CBS_mem_equal(&previous_client, S3I(s)->previous_client_finished, | 259 | if (!CBS_mem_equal(&previous_client, S3I(s)->previous_client_finished, | 
| 260 | CBS_len(&previous_client))) { | 260 | CBS_len(&previous_client))) { | 
| 261 | SSLerror(SSL_R_RENEGOTIATION_MISMATCH); | 261 | SSLerror(s, SSL_R_RENEGOTIATION_MISMATCH); | 
| 262 | *al = SSL_AD_HANDSHAKE_FAILURE; | 262 | *al = SSL_AD_HANDSHAKE_FAILURE; | 
| 263 | return 0; | 263 | return 0; | 
| 264 | } | 264 | } | 
| 265 | if (!CBS_mem_equal(&previous_server, S3I(s)->previous_server_finished, | 265 | if (!CBS_mem_equal(&previous_server, S3I(s)->previous_server_finished, | 
| 266 | CBS_len(&previous_server))) { | 266 | CBS_len(&previous_server))) { | 
| 267 | SSLerror(SSL_R_RENEGOTIATION_MISMATCH); | 267 | SSLerror(s, SSL_R_RENEGOTIATION_MISMATCH); | 
| 268 | *al = SSL_AD_ILLEGAL_PARAMETER; | 268 | *al = SSL_AD_ILLEGAL_PARAMETER; | 
| 269 | return 0; | 269 | return 0; | 
| 270 | } | 270 | } | 
