summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorScott Deboy <sdeboy@secondstryke.com>2014-02-04 18:48:59 -0800
committerScott Deboy <sdeboy@secondstryke.com>2014-02-08 16:19:30 -0800
commit5a32dd8930212e2d93c023229083034d8282a596 (patch)
tree3b58ee152b49e5f8032af0725155f6cb496620ec /ssl
parent130ebe34c8e16985c9af740d0c9945f429b77431 (diff)
Don't break out of the custom extension callback loop - continue instead
The contract for custom extension callbacks has changed - all custom extension callbacks are triggered
Diffstat (limited to 'ssl')
-rw-r--r--ssl/ssltest.c9
-rw-r--r--ssl/t1_lib.c4
2 files changed, 5 insertions, 8 deletions
diff --git a/ssl/ssltest.c b/ssl/ssltest.c
index da7979b49c..47a8189bf7 100644
--- a/ssl/ssltest.c
+++ b/ssl/ssltest.c
@@ -501,8 +501,7 @@ static int custom_ext_0_cli_second_cb(SSL *s, unsigned short ext_type,
unsigned short inlen, int *al,
void *arg)
{
- custom_ext_error = 1; /* Shouldn't be called */
- return 0;
+ return 1;
}
static int custom_ext_1_cli_first_cb(SSL *s, unsigned short ext_type,
@@ -521,8 +520,7 @@ static int custom_ext_1_cli_second_cb(SSL *s, unsigned short ext_type,
unsigned short inlen, int *al,
void *arg)
{
- custom_ext_error = 1; /* Shouldn't be called */
- return 0;
+ return 1;
}
static int custom_ext_2_cli_first_cb(SSL *s, unsigned short ext_type,
@@ -579,8 +577,7 @@ static int custom_ext_0_srv_first_cb(SSL *s, unsigned short ext_type,
unsigned short inlen, int *al,
void *arg)
{
- custom_ext_error = 1;
- return 0; /* Shouldn't be called */
+ return 1;
}
/* 'generate' callbacks are always called, even if the 'receive' callback isn't called */
diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
index 61b22043d7..bf96ae25c3 100644
--- a/ssl/t1_lib.c
+++ b/ssl/t1_lib.c
@@ -1718,14 +1718,14 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned cha
/* NULL callback or -1 omits extension */
if (!record->fn2)
- break;
+ continue;
cb_retval = record->fn2(s, record->ext_type,
&out, &outlen, al,
record->arg);
if (cb_retval == 0)
return NULL; /* error */
if (cb_retval == -1)
- break; /* skip this extension */
+ continue; /* skip this extension */
if (limit < ret + 4 + outlen)
return NULL;
s2n(record->ext_type, ret);