summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorbeck <>2017-02-07 02:08:38 +0000
committerbeck <>2017-02-07 02:08:38 +0000
commit91c389f89015a024212e73f5ec6e24166955ab6e (patch)
treea4e6a6d2d23329b576b63c8698e62a87e7388b69 /src/lib/libssl/s3_lib.c
parent8a1ec4c748b269fba0669ee71234ec9a0f128613 (diff)
downloadopenbsd-91c389f89015a024212e73f5ec6e24166955ab6e.tar.gz
openbsd-91c389f89015a024212e73f5ec6e24166955ab6e.tar.bz2
openbsd-91c389f89015a024212e73f5ec6e24166955ab6e.zip
Change SSLerror() back to taking two args, with the first one being an SSL *.
Make a table of "function codes" which maps the internal state of the SSL * to something like a useful name so in a typical error in the connection you know in what sort of place in the handshake things happened. (instead of by arcane function name). Add SSLerrorx() for when we don't have an SSL * ok jsing@ after us both being prodded by bluhm@ to make it not terrible
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
-rw-r--r--src/lib/libssl/s3_lib.c48
1 files changed, 24 insertions, 24 deletions
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;