summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2017-08-09 17:49:54 +0000
committerjsing <>2017-08-09 17:49:54 +0000
commit728461d1289a45d154875141eb0e954d9a212e34 (patch)
tree2ddbb3edf74126c297b294fedc15f41c3145674b /src/lib
parent8e507136325b4aead55fd47a2aeb15be4e9da3b0 (diff)
downloadopenbsd-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.c60
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)
2078long 2078long
2079ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) 2079ssl3_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
2110static int 2110static 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
2338long 2336long
2339ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void)) 2337ssl3_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/*