diff options
author | beck <> | 2017-02-07 02:08:38 +0000 |
---|---|---|
committer | beck <> | 2017-02-07 02:08:38 +0000 |
commit | 91c389f89015a024212e73f5ec6e24166955ab6e (patch) | |
tree | a4e6a6d2d23329b576b63c8698e62a87e7388b69 /src/lib/libssl/s3_lib.c | |
parent | 8a1ec4c748b269fba0669ee71234ec9a0f128613 (diff) | |
download | openbsd-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.c | 48 |
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; |