BUG/MINOR: ssl: EVP_PKEY must be freed after X509_get_pubkey usage

"X509_get_pubkey() attempts to decode the public key for certificate x.
If successful it returns the public key as an EVP_PKEY pointer with its
reference count incremented: this means the returned key must be freed
up after use."
diff --git a/src/ssl_sock.c b/src/ssl_sock.c
index acf1c39..32f290b 100644
--- a/src/ssl_sock.c
+++ b/src/ssl_sock.c
@@ -834,11 +834,14 @@
 
 	if (!callback) {
 		struct ocsp_cbk_arg *cb_arg = calloc(1, sizeof(*cb_arg));
+		EVP_PKEY *pkey;
 
 		cb_arg->is_single = 1;
 		cb_arg->s_ocsp = iocsp;
 
-		cb_arg->single_kt = EVP_PKEY_base_id(X509_get_pubkey(x));
+		pkey = X509_get_pubkey(x);
+		cb_arg->single_kt = EVP_PKEY_base_id(pkey);
+		EVP_PKEY_free(pkey);
 
 		SSL_CTX_set_tlsext_status_cb(ctx, ssl_sock_ocsp_stapling_cbk);
 		SSL_CTX_set_tlsext_status_arg(ctx, cb_arg);
@@ -851,6 +854,7 @@
 		struct certificate_ocsp *tmp_ocsp;
 		int index;
 		int key_type;
+		EVP_PKEY *pkey;
 
 #ifdef SSL_CTX_get_tlsext_status_arg
 		SSL_CTX_ctrl(ctx, SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG, 0, &cb_arg);
@@ -869,7 +873,10 @@
 		cb_arg->is_single = 0;
 		cb_arg->single_kt = 0;
 
-		key_type = EVP_PKEY_base_id(X509_get_pubkey(x));
+		pkey = X509_get_pubkey(x);
+		key_type = EVP_PKEY_base_id(pkey);
+		EVP_PKEY_free(pkey);
+
 		index = ssl_sock_get_ocsp_arg_kt_index(key_type);
 		if (index >= 0 && !cb_arg->m_ocsp[index])
 			cb_arg->m_ocsp[index] = iocsp;