summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
-rw-r--r--src/lib/libssl/s3_lib.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index 87b43a3521..afc798bedc 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.192 2020/04/18 14:07:56 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.193 2020/05/10 14:17:47 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 *
@@ -1842,16 +1842,30 @@ _SSL_set_tlsext_status_ids(SSL *s, STACK_OF(OCSP_RESPID) *ids)
1842static int 1842static int
1843_SSL_get_tlsext_status_ocsp_resp(SSL *s, unsigned char **resp) 1843_SSL_get_tlsext_status_ocsp_resp(SSL *s, unsigned char **resp)
1844{ 1844{
1845 *resp = s->internal->tlsext_ocsp_resp; 1845 if (s->internal->tlsext_ocsp_resp != NULL &&
1846 return s->internal->tlsext_ocsp_resplen; 1846 s->internal->tlsext_ocsp_resp_len < INT_MAX) {
1847 *resp = s->internal->tlsext_ocsp_resp;
1848 return (int)s->internal->tlsext_ocsp_resp_len;
1849 }
1850
1851 *resp = NULL;
1852
1853 return -1;
1847} 1854}
1848 1855
1849static int 1856static int
1850_SSL_set_tlsext_status_ocsp_resp(SSL *s, unsigned char *resp, int resp_len) 1857_SSL_set_tlsext_status_ocsp_resp(SSL *s, unsigned char *resp, int resp_len)
1851{ 1858{
1852 free(s->internal->tlsext_ocsp_resp); 1859 free(s->internal->tlsext_ocsp_resp);
1860 s->internal->tlsext_ocsp_resp = NULL;
1861 s->internal->tlsext_ocsp_resp_len = 0;
1862
1863 if (resp_len < 0)
1864 return 0;
1865
1853 s->internal->tlsext_ocsp_resp = resp; 1866 s->internal->tlsext_ocsp_resp = resp;
1854 s->internal->tlsext_ocsp_resplen = resp_len; 1867 s->internal->tlsext_ocsp_resp_len = (size_t)resp_len;
1868
1855 return 1; 1869 return 1;
1856} 1870}
1857 1871