aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ssluse.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/ssluse.c b/lib/ssluse.c
index 1626b7ac5..99cf3c3b1 100644
--- a/lib/ssluse.c
+++ b/lib/ssluse.c
@@ -594,14 +594,14 @@ int cert_stuff(struct connectdata *conn,
* the SSL context */
if(!SSL_CTX_check_private_key(ctx)) {
failf(data, "Private key does not match the certificate public key");
- return(0);
+ return 0;
}
#ifndef HAVE_USERDATA_IN_PWD_CALLBACK
/* erase it now */
memset(global_passwd, 0, sizeof(global_passwd));
#endif
}
- return(1);
+ return 1;
}
/* returns non-zero on failure */
@@ -658,7 +658,7 @@ static char *SSL_strerror(unsigned long error, char *buf, size_t size)
(void) size;
ERR_error_string(error, buf);
#endif
- return (buf);
+ return buf;
}
#endif /* USE_SSLEAY */
@@ -747,11 +747,22 @@ int Curl_ossl_check_cxn(struct connectdata *conn)
CURLcode Curl_ossl_set_engine(struct SessionHandle *data, const char *engine)
{
#if defined(USE_SSLEAY) && defined(HAVE_OPENSSL_ENGINE_H)
- ENGINE *e = ENGINE_by_id(engine);
+ ENGINE *e;
+
+#if OPENSSL_VERSION_NUMBER >= 0x00909000L
+ e = ENGINE_by_id(engine);
+#else
+ /* avoid memory leak */
+ for(e = ENGINE_get_first(); e; e = ENGINE_get_next(e)) {
+ const char *e_id = ENGINE_get_id(e);
+ if(!strcmp(engine, e_id))
+ break;
+ }
+#endif
if(!e) {
failf(data, "SSL Engine '%s' not found", engine);
- return (CURLE_SSL_ENGINE_NOTFOUND);
+ return CURLE_SSL_ENGINE_NOTFOUND;
}
if(data->state.engine) {
@@ -765,14 +776,14 @@ CURLcode Curl_ossl_set_engine(struct SessionHandle *data, const char *engine)
ENGINE_free(e);
failf(data, "Failed to initialise SSL Engine '%s':\n%s",
engine, SSL_strerror(ERR_get_error(), buf, sizeof(buf)));
- return (CURLE_SSL_ENGINE_INITFAILED);
+ return CURLE_SSL_ENGINE_INITFAILED;
}
data->state.engine = e;
- return (CURLE_OK);
+ return CURLE_OK;
#else
(void)engine;
failf(data, "SSL Engine not supported");
- return (CURLE_SSL_ENGINE_NOTFOUND);
+ return CURLE_SSL_ENGINE_NOTFOUND;
#endif
}
@@ -817,7 +828,7 @@ struct curl_slist *Curl_ossl_engines_list(struct SessionHandle *data)
}
#endif
(void) data;
- return (list);
+ return list;
}