Don't up_ref a NULL |CRYPTO_BUFFER|.

If an existing chain had a NULL placeholder for a leaf we could end up
trying to increment its reference count. That results in a crash at
configuration time. Found via the SSL_CTX API fuzzer.

BUG=oss-fuzz:480

Change-Id: I0ddc2cbde2e625015768f1bdc8da625e8a4f05fd
Reviewed-on: https://boringssl-review.googlesource.com/13383
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c
index 52a386b..ed6ba0d 100644
--- a/ssl/ssl_cert.c
+++ b/ssl/ssl_cert.c
@@ -295,7 +295,10 @@
     if (!sk_CRYPTO_BUFFER_push(new_chain, leaf)) {
       goto err;
     }
-    CRYPTO_BUFFER_up_ref(leaf);
+    /* |leaf| might be NULL if it's a “leafless” chain. */
+    if (leaf != NULL) {
+      CRYPTO_BUFFER_up_ref(leaf);
+    }
   }
 
   for (size_t i = 0; i < sk_X509_num(chain); i++) {