Return success in custom_ext_parse_old_cb_wrap if parse_cb is NULL
authorGraham Edgecombe <gpe@grahamedgecombe.com>
Tue, 25 Apr 2017 18:36:10 +0000 (19:36 +0100)
committerMatt Caswell <matt@openssl.org>
Wed, 26 Apr 2017 16:37:30 +0000 (17:37 +0100)
This fixes a segfault if a NULL parse_cb is passed to
SSL_CTX_add_{client,server}_custom_ext, which was supported in the
pre-1.1.1 implementation.

This behaviour is consistent with the other custom_ext_*_old_cb_wrap
functions, and with the new SSL_CTX_add_custom_ext function.

CLA: trivial

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3310)

ssl/statem/extensions_cust.c

index 3188adea0c3855df8e686429d62882d15e19c115..6de59e2425f8769e451d09ff327d94b1d7b641b4 100644 (file)
@@ -64,6 +64,9 @@ static int custom_ext_parse_old_cb_wrap(SSL *s, unsigned int ext_type,
     custom_ext_parse_cb_wrap *parse_cb_wrap =
         (custom_ext_parse_cb_wrap *)parse_arg;
 
+    if (parse_cb_wrap->parse_cb == NULL)
+        return 1;
+
     return parse_cb_wrap->parse_cb(s, ext_type, in, inlen, al,
                                    parse_cb_wrap->parse_arg);
 }