diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libssl/ssl_srvr.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index 01fe647500..3cf6d9a3cb 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.41 2018/08/19 15:38:03 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.42 2018/08/22 17:46:29 jsing 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 | * |
@@ -2532,7 +2532,7 @@ ssl3_send_newsession_ticket(SSL *s) | |||
2532 | const unsigned char *const_p; | 2532 | const unsigned char *const_p; |
2533 | unsigned char *p, *hmac; | 2533 | unsigned char *p, *hmac; |
2534 | size_t hmac_len; | 2534 | size_t hmac_len; |
2535 | int enc_ticket_len, slen; | 2535 | int enc_ticket_len, len, slen; |
2536 | int slen_full = 0; | 2536 | int slen_full = 0; |
2537 | SSL_SESSION *sess; | 2537 | SSL_SESSION *sess; |
2538 | unsigned int hlen; | 2538 | unsigned int hlen; |
@@ -2610,9 +2610,16 @@ ssl3_send_newsession_ticket(SSL *s) | |||
2610 | /* Encrypt the session ticket. */ | 2610 | /* Encrypt the session ticket. */ |
2611 | if ((enc_ticket = calloc(1, slen + EVP_MAX_BLOCK_LENGTH)) == NULL) | 2611 | if ((enc_ticket = calloc(1, slen + EVP_MAX_BLOCK_LENGTH)) == NULL) |
2612 | goto err; | 2612 | goto err; |
2613 | if (!EVP_EncryptUpdate(&ctx, enc_ticket, &enc_ticket_len, senc, slen)) | 2613 | enc_ticket_len = 0; |
2614 | if (!EVP_EncryptUpdate(&ctx, enc_ticket, &len, senc, slen)) | ||
2614 | goto err; | 2615 | goto err; |
2615 | if (!EVP_EncryptFinal_ex(&ctx, enc_ticket, &enc_ticket_len)) | 2616 | enc_ticket_len += len; |
2617 | if (!EVP_EncryptFinal_ex(&ctx, enc_ticket + enc_ticket_len, &len)) | ||
2618 | goto err; | ||
2619 | enc_ticket_len += len; | ||
2620 | |||
2621 | if (enc_ticket_len < 0 || | ||
2622 | enc_ticket_len > slen + EVP_MAX_BLOCK_LENGTH) | ||
2616 | goto err; | 2623 | goto err; |
2617 | 2624 | ||
2618 | /* Generate the HMAC. */ | 2625 | /* Generate the HMAC. */ |