summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libssl/ssl_srvr.c15
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. */