Cosmetic touchups.
diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c
index f86511d..81b5811 100644
--- a/ssl/ssl_cert.c
+++ b/ssl/ssl_cert.c
@@ -350,15 +350,15 @@
 		if (cert->pkeys[i].serverinfo != NULL)
 			{
 			/* Just copy everything. */
-			ret->pkeys[i].serverinfo_length =
-				cert->pkeys[i].serverinfo_length;
 			ret->pkeys[i].serverinfo =
-				OPENSSL_malloc(ret->pkeys[i].serverinfo_length);
+				OPENSSL_malloc(cert->pkeys[i].serverinfo_length);
 			if (ret->pkeys[i].serverinfo == NULL)
 				{
 				SSLerr(SSL_F_SSL_CERT_DUP, ERR_R_MALLOC_FAILURE);
 				return NULL;
 				}
+			ret->pkeys[i].serverinfo_length =
+				cert->pkeys[i].serverinfo_length;
 			memcpy(ret->pkeys[i].serverinfo,
 			       cert->pkeys[i].serverinfo,
 			       cert->pkeys[i].serverinfo_length);
@@ -488,6 +488,7 @@
 			{
 			OPENSSL_free(cpk->serverinfo);
 			cpk->serverinfo = NULL;
+			cpk->serverinfo_length = 0;
 			}
 #endif
 		/* Clear all flags apart from explicit sign */