From e6941c7814bb25729d65e1f8e87d1c110a0cbe7e Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Sat, 4 Mar 2017 23:58:03 +0000 Subject: [PATCH] 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) --- ssl/statem/extensions.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; -- 2.25.1