diff options
author | jsing <> | 2017-08-09 17:49:54 +0000 |
---|---|---|
committer | jsing <> | 2017-08-09 17:49:54 +0000 |
commit | 728461d1289a45d154875141eb0e954d9a212e34 (patch) | |
tree | 2ddbb3edf74126c297b294fedc15f41c3145674b /src/lib | |
parent | 8e507136325b4aead55fd47a2aeb15be4e9da3b0 (diff) | |
download | openbsd-728461d1289a45d154875141eb0e954d9a212e34.tar.gz openbsd-728461d1289a45d154875141eb0e954d9a212e34.tar.bz2 openbsd-728461d1289a45d154875141eb0e954d9a212e34.zip |
Consistently return from each SSL/SSL_CTX control case, rather than
breaking from some and returning from others.
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libssl/s3_lib.c | 60 |
1 files changed, 27 insertions, 33 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index b82cf36f2e..1abe01cd88 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.153 2017/08/09 17:42:12 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.154 2017/08/09 17:49:54 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 | * |
@@ -2078,33 +2078,33 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
2078 | long | 2078 | long |
2079 | ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | 2079 | ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) |
2080 | { | 2080 | { |
2081 | int ret = 0; | ||
2082 | |||
2083 | if (cmd == SSL_CTRL_SET_TMP_DH_CB || cmd == SSL_CTRL_SET_TMP_ECDH_CB) { | 2081 | if (cmd == SSL_CTRL_SET_TMP_DH_CB || cmd == SSL_CTRL_SET_TMP_ECDH_CB) { |
2084 | if (!ssl_cert_inst(&s->cert)) { | 2082 | if (!ssl_cert_inst(&s->cert)) { |
2085 | SSLerror(s, ERR_R_MALLOC_FAILURE); | 2083 | SSLerror(s, ERR_R_MALLOC_FAILURE); |
2086 | return (0); | 2084 | return 0; |
2087 | } | 2085 | } |
2088 | } | 2086 | } |
2089 | 2087 | ||
2090 | switch (cmd) { | 2088 | switch (cmd) { |
2091 | case SSL_CTRL_SET_TMP_RSA_CB: | 2089 | case SSL_CTRL_SET_TMP_RSA_CB: |
2092 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2090 | SSLerror(s, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); |
2093 | break; | 2091 | return 0; |
2092 | |||
2094 | case SSL_CTRL_SET_TMP_DH_CB: | 2093 | case SSL_CTRL_SET_TMP_DH_CB: |
2095 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2094 | s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; |
2096 | break; | 2095 | return 1; |
2096 | |||
2097 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2097 | case SSL_CTRL_SET_TMP_ECDH_CB: |
2098 | s->cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | 2098 | s->cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; |
2099 | break; | 2099 | return 1; |
2100 | |||
2100 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: | 2101 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: |
2101 | s->internal->tlsext_debug_cb = (void (*)(SSL *, int , int, | 2102 | s->internal->tlsext_debug_cb = (void (*)(SSL *, int , int, |
2102 | unsigned char *, int, void *))fp; | 2103 | unsigned char *, int, void *))fp; |
2103 | break; | 2104 | return 1; |
2104 | default: | ||
2105 | break; | ||
2106 | } | 2105 | } |
2107 | return (ret); | 2106 | |
2107 | return 0; | ||
2108 | } | 2108 | } |
2109 | 2109 | ||
2110 | static int | 2110 | static int |
@@ -2310,12 +2310,12 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
2310 | 2310 | ||
2311 | case SSL_CTRL_SET_MIN_PROTO_VERSION: | 2311 | case SSL_CTRL_SET_MIN_PROTO_VERSION: |
2312 | if (larg < 0 || larg > UINT16_MAX) | 2312 | if (larg < 0 || larg > UINT16_MAX) |
2313 | return (0); | 2313 | return 0; |
2314 | return SSL_CTX_set_min_proto_version(ctx, larg); | 2314 | return SSL_CTX_set_min_proto_version(ctx, larg); |
2315 | 2315 | ||
2316 | case SSL_CTRL_SET_MAX_PROTO_VERSION: | 2316 | case SSL_CTRL_SET_MAX_PROTO_VERSION: |
2317 | if (larg < 0 || larg > UINT16_MAX) | 2317 | if (larg < 0 || larg > UINT16_MAX) |
2318 | return (0); | 2318 | return 0; |
2319 | return SSL_CTX_set_max_proto_version(ctx, larg); | 2319 | return SSL_CTX_set_max_proto_version(ctx, larg); |
2320 | 2320 | ||
2321 | /* | 2321 | /* |
@@ -2328,51 +2328,45 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) | |||
2328 | case SSL_CTRL_SET_TMP_RSA_CB: | 2328 | case SSL_CTRL_SET_TMP_RSA_CB: |
2329 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2329 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); |
2330 | return 0; | 2330 | return 0; |
2331 | |||
2332 | default: | ||
2333 | return (0); | ||
2334 | } | 2331 | } |
2335 | return (1); | 2332 | |
2333 | return 0; | ||
2336 | } | 2334 | } |
2337 | 2335 | ||
2338 | long | 2336 | long |
2339 | ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) | 2337 | ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) |
2340 | { | 2338 | { |
2341 | CERT *cert; | ||
2342 | |||
2343 | cert = ctx->internal->cert; | ||
2344 | |||
2345 | switch (cmd) { | 2339 | switch (cmd) { |
2346 | case SSL_CTRL_SET_TMP_RSA_CB: | 2340 | case SSL_CTRL_SET_TMP_RSA_CB: |
2347 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); | 2341 | SSLerrorx(ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); |
2348 | return (0); | 2342 | return 0; |
2349 | 2343 | ||
2350 | case SSL_CTRL_SET_TMP_DH_CB: | 2344 | case SSL_CTRL_SET_TMP_DH_CB: |
2351 | cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; | 2345 | ctx->internal->cert->dh_tmp_cb = |
2352 | break; | 2346 | (DH *(*)(SSL *, int, int))fp; |
2347 | return 1; | ||
2353 | 2348 | ||
2354 | case SSL_CTRL_SET_TMP_ECDH_CB: | 2349 | case SSL_CTRL_SET_TMP_ECDH_CB: |
2355 | cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | 2350 | ctx->internal->cert->ecdh_tmp_cb = |
2356 | break; | 2351 | (EC_KEY *(*)(SSL *, int, int))fp; |
2352 | return 1; | ||
2357 | 2353 | ||
2358 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: | 2354 | case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: |
2359 | ctx->internal->tlsext_servername_callback = | 2355 | ctx->internal->tlsext_servername_callback = |
2360 | (int (*)(SSL *, int *, void *))fp; | 2356 | (int (*)(SSL *, int *, void *))fp; |
2361 | break; | 2357 | return 1; |
2362 | 2358 | ||
2363 | case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB: | 2359 | case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB: |
2364 | ctx->internal->tlsext_status_cb = (int (*)(SSL *, void *))fp; | 2360 | ctx->internal->tlsext_status_cb = (int (*)(SSL *, void *))fp; |
2365 | break; | 2361 | return 1; |
2366 | 2362 | ||
2367 | case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB: | 2363 | case SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB: |
2368 | ctx->internal->tlsext_ticket_key_cb = (int (*)(SSL *, unsigned char *, | 2364 | ctx->internal->tlsext_ticket_key_cb = (int (*)(SSL *, unsigned char *, |
2369 | unsigned char *, EVP_CIPHER_CTX *, HMAC_CTX *, int))fp; | 2365 | unsigned char *, EVP_CIPHER_CTX *, HMAC_CTX *, int))fp; |
2370 | break; | 2366 | return 1; |
2371 | |||
2372 | default: | ||
2373 | return (0); | ||
2374 | } | 2367 | } |
2375 | return (1); | 2368 | |
2369 | return 0; | ||
2376 | } | 2370 | } |
2377 | 2371 | ||
2378 | /* | 2372 | /* |