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 <kurt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2845)
diff --git a/ssl/statem/extensions.c b/ssl/statem/extensions.c
index 8c4013e..fab9bcb 100644
--- a/ssl/statem/extensions.c
+++ b/ssl/statem/extensions.c
@@ -1252,8 +1252,9 @@
             || !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;