|
|
- From c4c8aa5ba0ec6bf4c6d74c4807b66edfbd91be7c Mon Sep 17 00:00:00 2001
- From: Rosen Penev <rosenp@gmail.com>
- Date: Mon, 11 Jan 2021 01:51:58 -0800
- Subject: [PATCH] fix compilation without deprecated OpenSSL APIs
-
- (De)initialization is deprecated under OpenSSL 1.0 and above.
-
- [TT: Some simplifications, and additional edits.]
-
- Signed-off-by: Rosen Penev <rosenp@gmail.com>
- ---
- libfetch/common.c | 12 ++++--------
- src/apk.c | 26 +-------------------------
- src/apk_openssl.h | 27 +++++++++++++++++++++++++++
- 3 files changed, 32 insertions(+), 33 deletions(-)
-
- --- a/libfetch/common.c
- +++ b/libfetch/common.c
- @@ -499,15 +499,11 @@ static int fetch_ssl_setup_client_certif
- int
- fetch_ssl(conn_t *conn, const struct url *URL, int verbose)
- {
- - /* Init the SSL library and context */
- - if (!SSL_library_init()){
- - fprintf(stderr, "SSL library init failed\n");
- - return (-1);
- - }
- -
- - SSL_load_error_strings();
- -
- +#if OPENSSL_VERSION_NUMBER < 0x10100000L
- conn->ssl_meth = SSLv23_client_method();
- +#else
- + conn->ssl_meth = TLS_client_method();
- +#endif
- conn->ssl_ctx = SSL_CTX_new(conn->ssl_meth);
- SSL_CTX_set_mode(conn->ssl_ctx, SSL_MODE_AUTO_RETRY);
-
- --- a/src/apk.c
- +++ b/src/apk.c
- @@ -20,11 +20,6 @@
- #include <unistd.h>
- #include <sys/stat.h>
-
- -#include <openssl/crypto.h>
- -#ifndef OPENSSL_NO_ENGINE
- -#include <openssl/engine.h>
- -#endif
- -
- #include <fetch.h>
-
- #include "apk_defines.h"
- @@ -385,25 +380,6 @@ static int parse_options(int argc, char
- return 0;
- }
-
- -static void fini_openssl(void)
- -{
- - EVP_cleanup();
- -#ifndef OPENSSL_NO_ENGINE
- - ENGINE_cleanup();
- -#endif
- - CRYPTO_cleanup_all_ex_data();
- -}
- -
- -static void init_openssl(void)
- -{
- - atexit(fini_openssl);
- - OpenSSL_add_all_algorithms();
- -#ifndef OPENSSL_NO_ENGINE
- - ENGINE_load_builtin_engines();
- - ENGINE_register_all_complete();
- -#endif
- -}
- -
- static void on_sigwinch(int s)
- {
- apk_reset_screen_width();
- @@ -484,7 +460,7 @@ int main(int argc, char **argv)
- apk_force |= applet->forced_force;
- }
-
- - init_openssl();
- + apk_openssl_init();
- setup_automatic_flags();
- fetchConnectionCacheInit(32, 4);
-
- --- a/src/apk_openssl.h
- +++ b/src/apk_openssl.h
- @@ -11,7 +11,11 @@
- #define APK_SSL_COMPAT_H
-
- #include <openssl/opensslv.h>
- +#include <openssl/crypto.h>
- #include <openssl/evp.h>
- +#ifndef OPENSSL_NO_ENGINE
- +#include <openssl/engine.h>
- +#endif
-
- #if OPENSSL_VERSION_NUMBER < 0x1010000fL || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
-
- @@ -25,6 +29,29 @@ static inline void EVP_MD_CTX_free(EVP_M
- return EVP_MD_CTX_destroy(mdctx);
- }
-
- +static inline void apk_openssl_cleanup(void)
- +{
- + EVP_cleanup();
- +#ifndef OPENSSL_NO_ENGINE
- + ENGINE_cleanup();
- +#endif
- + CRYPTO_cleanup_all_ex_data();
- +}
- +
- +static inline void apk_openssl_init(void)
- +{
- + atexit(apk_openssl_cleanup);
- + OpenSSL_add_all_algorithms();
- +#ifndef OPENSSL_NO_ENGINE
- + ENGINE_load_builtin_engines();
- + ENGINE_register_all_complete();
- +#endif
- +}
- +
- +#else
- +
- +static inline void apk_openssl_init(void) {}
- +
- #endif
-
- #endif
|