diff options
Diffstat (limited to 'src/lib')
| -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. */ |
