From: Matt Caswell Date: Sat, 4 Mar 2017 23:58:03 +0000 (+0000) Subject: Don't call memcmp with a NULL pointer X-Git-Tag: OpenSSL_1_1_1-pre1~2110 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=e6941c7814bb25729d65e1f8e87d1c110a0cbe7e;ds=sidebyside Don't call memcmp with a NULL pointer If early data is sent to a server, but ALPN is not used then memcmp is called with a NULL pointer which is undefined behaviour. Fixes #2841 Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/2845) --- diff --git a/ssl/statem/extensions.c b/ssl/statem/extensions.c index 8c4013e416..fab9bcb3d4 100644 --- a/ssl/statem/extensions.c +++ b/ssl/statem/extensions.c @@ -1252,8 +1252,9 @@ static int final_early_data(SSL *s, unsigned int context, int sent, int *al) || !s->ext.early_data_ok || s->hello_retry_request || s->s3->alpn_selected_len != s->session->ext.alpn_selected_len - || memcmp(s->s3->alpn_selected, s->session->ext.alpn_selected, - s->s3->alpn_selected_len) != 0){ + || (s->s3->alpn_selected_len > 0 + && memcmp(s->s3->alpn_selected, s->session->ext.alpn_selected, + s->s3->alpn_selected_len) != 0)) { s->ext.early_data = SSL_EARLY_DATA_REJECTED; } else { s->ext.early_data = SSL_EARLY_DATA_ACCEPTED;