aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/openssl/0001-Use-secure_getenv-3-when-available.patch260
-rw-r--r--main/openssl/APKBUILD16
2 files changed, 9 insertions, 267 deletions
diff --git a/main/openssl/0001-Use-secure_getenv-3-when-available.patch b/main/openssl/0001-Use-secure_getenv-3-when-available.patch
deleted file mode 100644
index 778a09278f..0000000000
--- a/main/openssl/0001-Use-secure_getenv-3-when-available.patch
+++ /dev/null
@@ -1,260 +0,0 @@
-From 79c2c741303ed188214b9299a51c837635f7e9a8 Mon Sep 17 00:00:00 2001
-From: Pauli <paul.dale@oracle.com>
-Date: Mon, 24 Sep 2018 11:21:18 +1000
-Subject: [PATCH] Use secure_getenv(3) when available.
-
-Change all calls to getenv() inside libcrypto to use a new wrapper function
-that use secure_getenv() if available and an issetugid then getenv if not.
-
-CPU processor override flags are unchanged.
-
-Extra checks for OPENSSL_issetugid() have been removed in favour of the
-safe getenv.
-
-Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
-(Merged from https://github.com/openssl/openssl/pull/7047)
-
-(cherry picked from commit 5c39a55d04ea6e6f734b627a050b9e702788d50d)
----
- crypto/build.info | 2 +-
- crypto/conf/conf_api.c | 5 +++--
- crypto/conf/conf_mod.c | 7 ++-----
- crypto/ct/ct_log.c | 2 +-
- crypto/engine/eng_list.c | 3 +--
- crypto/getenv.c | 31 +++++++++++++++++++++++++++++++
- crypto/pkcs12/p12_mutl.c | 18 +++++++++---------
- crypto/rand/randfile.c | 6 ++----
- crypto/x509/by_dir.c | 2 +-
- crypto/x509/by_file.c | 2 +-
- include/internal/cryptlib.h | 2 ++
- 11 files changed, 54 insertions(+), 26 deletions(-)
- create mode 100644 crypto/getenv.c
-
-diff --git a/crypto/build.info b/crypto/build.info
-index b515b7318e..2c619c62e8 100644
---- a/crypto/build.info
-+++ b/crypto/build.info
-@@ -2,7 +2,7 @@ LIBS=../libcrypto
- SOURCE[../libcrypto]=\
- cryptlib.c mem.c mem_dbg.c cversion.c ex_data.c cpt_err.c \
- ebcdic.c uid.c o_time.c o_str.c o_dir.c o_fopen.c ctype.c \
-- threads_pthread.c threads_win.c threads_none.c \
-+ threads_pthread.c threads_win.c threads_none.c getenv.c \
- o_init.c o_fips.c mem_sec.c init.c {- $target{cpuid_asm_src} -} \
- {- $target{uplink_aux_src} -}
- EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \
-diff --git a/crypto/conf/conf_api.c b/crypto/conf/conf_api.c
-index 72fe2da1ad..5e57d749ce 100644
---- a/crypto/conf/conf_api.c
-+++ b/crypto/conf/conf_api.c
-@@ -10,6 +10,7 @@
- /* Part of the code in here was originally in conf.c, which is now removed */
-
- #include "e_os.h"
-+#include "internal/cryptlib.h"
- #include <stdlib.h>
- #include <string.h>
- #include <openssl/conf.h>
-@@ -82,7 +83,7 @@ char *_CONF_get_string(const CONF *conf, const char *section,
- if (v != NULL)
- return v->value;
- if (strcmp(section, "ENV") == 0) {
-- p = getenv(name);
-+ p = ossl_safe_getenv(name);
- if (p != NULL)
- return p;
- }
-@@ -95,7 +96,7 @@ char *_CONF_get_string(const CONF *conf, const char *section,
- else
- return NULL;
- } else
-- return getenv(name);
-+ return ossl_safe_getenv(name);
- }
-
- static unsigned long conf_value_hash(const CONF_VALUE *v)
-diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c
-index df53609cc4..51f262e774 100644
---- a/crypto/conf/conf_mod.c
-+++ b/crypto/conf/conf_mod.c
-@@ -480,11 +480,8 @@ char *CONF_get1_default_config_file(void)
- char *file, *sep = "";
- int len;
-
-- if (!OPENSSL_issetugid()) {
-- file = getenv("OPENSSL_CONF");
-- if (file)
-- return OPENSSL_strdup(file);
-- }
-+ if ((file = ossl_safe_getenv("OPENSSL_CONF")) != NULL)
-+ return OPENSSL_strdup(file);
-
- len = strlen(X509_get_default_cert_area());
- #ifndef OPENSSL_SYS_VMS
-diff --git a/crypto/ct/ct_log.c b/crypto/ct/ct_log.c
-index be6681dca7..c1bca3e141 100644
---- a/crypto/ct/ct_log.c
-+++ b/crypto/ct/ct_log.c
-@@ -137,7 +137,7 @@ static int ctlog_new_from_conf(CTLOG **ct_log, const CONF *conf, const char *sec
-
- int CTLOG_STORE_load_default_file(CTLOG_STORE *store)
- {
-- const char *fpath = getenv(CTLOG_FILE_EVP);
-+ const char *fpath = ossl_safe_getenv(CTLOG_FILE_EVP);
-
- if (fpath == NULL)
- fpath = CTLOG_FILE;
-diff --git a/crypto/engine/eng_list.c b/crypto/engine/eng_list.c
-index 4bc7ea173c..45c339c541 100644
---- a/crypto/engine/eng_list.c
-+++ b/crypto/engine/eng_list.c
-@@ -317,8 +317,7 @@ ENGINE *ENGINE_by_id(const char *id)
- * Prevent infinite recursion if we're looking for the dynamic engine.
- */
- if (strcmp(id, "dynamic")) {
-- if (OPENSSL_issetugid()
-- || (load_dir = getenv("OPENSSL_ENGINES")) == NULL)
-+ if ((load_dir = ossl_safe_getenv("OPENSSL_ENGINES")) == NULL)
- load_dir = ENGINESDIR;
- iterator = ENGINE_by_id("dynamic");
- if (!iterator || !ENGINE_ctrl_cmd_string(iterator, "ID", id, 0) ||
-diff --git a/crypto/getenv.c b/crypto/getenv.c
-new file mode 100644
-index 0000000000..7e98b645b0
---- /dev/null
-+++ b/crypto/getenv.c
-@@ -0,0 +1,31 @@
-+/*
-+ * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
-+ *
-+ * Licensed under the OpenSSL license (the "License"). You may not use
-+ * this file except in compliance with the License. You can obtain a copy
-+ * in the file LICENSE in the source distribution or at
-+ * https://www.openssl.org/source/license.html
-+ */
-+
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE
-+#endif
-+
-+#include <stdlib.h>
-+#include "internal/cryptlib.h"
-+
-+char *ossl_safe_getenv(const char *name)
-+{
-+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
-+# if __GLIBC_PREREQ(2, 17)
-+# define SECURE_GETENV
-+ return secure_getenv(name);
-+# endif
-+#endif
-+
-+#ifndef SECURE_GETENV
-+ if (OPENSSL_issetugid())
-+ return NULL;
-+ return getenv(name);
-+#endif
-+}
-diff --git a/crypto/pkcs12/p12_mutl.c b/crypto/pkcs12/p12_mutl.c
-index 88d1d66324..0cbbed364a 100644
---- a/crypto/pkcs12/p12_mutl.c
-+++ b/crypto/pkcs12/p12_mutl.c
-@@ -7,13 +7,13 @@
- * https://www.openssl.org/source/license.html
- */
-
--# include <stdio.h>
--# include "internal/cryptlib.h"
--# include <openssl/crypto.h>
--# include <openssl/hmac.h>
--# include <openssl/rand.h>
--# include <openssl/pkcs12.h>
--# include "p12_lcl.h"
-+#include <stdio.h>
-+#include "internal/cryptlib.h"
-+#include <openssl/crypto.h>
-+#include <openssl/hmac.h>
-+#include <openssl/rand.h>
-+#include <openssl/pkcs12.h>
-+#include "p12_lcl.h"
-
- int PKCS12_mac_present(const PKCS12 *p12)
- {
-@@ -44,7 +44,7 @@ void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac,
- }
- }
-
--# define TK26_MAC_KEY_LEN 32
-+#define TK26_MAC_KEY_LEN 32
-
- static int pkcs12_gen_gost_mac_key(const char *pass, int passlen,
- const unsigned char *salt, int saltlen,
-@@ -112,7 +112,7 @@ static int pkcs12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
- if ((md_type_nid == NID_id_GostR3411_94
- || md_type_nid == NID_id_GostR3411_2012_256
- || md_type_nid == NID_id_GostR3411_2012_512)
-- && !getenv("LEGACY_GOST_PKCS12")) {
-+ && ossl_safe_getenv("LEGACY_GOST_PKCS12") == NULL) {
- md_size = TK26_MAC_KEY_LEN;
- if (!pkcs12_gen_gost_mac_key(pass, passlen, salt, saltlen, iter,
- md_size, key, md_type)) {
-diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c
-index c652ddcf1e..89720eb5cf 100644
---- a/crypto/rand/randfile.c
-+++ b/crypto/rand/randfile.c
-@@ -262,11 +262,9 @@ const char *RAND_file_name(char *buf, size_t size)
- }
- }
- #else
-- if (OPENSSL_issetugid() != 0) {
-+ if ((s = ossl_safe_getenv("RANDFILE")) == NULL || *s == '\0') {
- use_randfile = 0;
-- } else if ((s = getenv("RANDFILE")) == NULL || *s == '\0') {
-- use_randfile = 0;
-- s = getenv("HOME");
-+ s = ossl_safe_getenv("HOME");
- }
- #endif
-
-diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c
-index 11ac52ce3c..b3760dbadf 100644
---- a/crypto/x509/by_dir.c
-+++ b/crypto/x509/by_dir.c
-@@ -73,7 +73,7 @@ static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
- switch (cmd) {
- case X509_L_ADD_DIR:
- if (argl == X509_FILETYPE_DEFAULT) {
-- const char *dir = getenv(X509_get_default_cert_dir_env());
-+ const char *dir = ossl_safe_getenv(X509_get_default_cert_dir_env());
-
- if (dir)
- ret = add_cert_dir(ld, dir, X509_FILETYPE_PEM);
-diff --git a/crypto/x509/by_file.c b/crypto/x509/by_file.c
-index 78d7fbdf44..244512c935 100644
---- a/crypto/x509/by_file.c
-+++ b/crypto/x509/by_file.c
-@@ -46,7 +46,7 @@ static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp,
- switch (cmd) {
- case X509_L_FILE_LOAD:
- if (argl == X509_FILETYPE_DEFAULT) {
-- file = getenv(X509_get_default_cert_file_env());
-+ file = ossl_safe_getenv(X509_get_default_cert_file_env());
- if (file)
- ok = (X509_load_cert_crl_file(ctx, file,
- X509_FILETYPE_PEM) != 0);
-diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h
-index a608735187..329ef62014 100644
---- a/include/internal/cryptlib.h
-+++ b/include/internal/cryptlib.h
-@@ -81,6 +81,8 @@ void OPENSSL_showfatal(const char *fmta, ...);
- void crypto_cleanup_all_ex_data_int(void);
- int openssl_init_fork_handlers(void);
-
-+char *ossl_safe_getenv(const char *name);
-+
- extern CRYPTO_RWLOCK *memdbg_lock;
- int openssl_strerror_r(int errnum, char *buf, size_t buflen);
- # if !defined(OPENSSL_NO_STDIO)
---
-2.19.1
-
diff --git a/main/openssl/APKBUILD b/main/openssl/APKBUILD
index ec18c5b806..57af4f3c88 100644
--- a/main/openssl/APKBUILD
+++ b/main/openssl/APKBUILD
@@ -1,8 +1,8 @@
# Maintainer: Timo Teras <timo.teras@iki.fi>
pkgname=openssl
-pkgver=1.1.1
+pkgver=1.1.1a
_abiver=${pkgver%.*}
-pkgrel=5
+pkgrel=0
pkgdesc="Toolkit for Transport Layer Security (TLS)"
url="https://www.openssl.org"
arch="all"
@@ -12,15 +12,18 @@ makedepends_build="perl"
makedepends_host="linux-headers"
makedepends="$makedepends_host $makedepends_build"
subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc libcrypto$_abiver:_libcrypto libssl$_abiver:_libssl"
-source="https://www.openssl.org/source/openssl-$pkgver.tar.gz
- 0001-Use-secure_getenv-3-when-available.patch
- "
+source="https://www.openssl.org/source/openssl-$pkgver.tar.gz"
case "$CARCH" in
s390x) options="$options !check";; # FIXME: test hangs
esac
builddir="$srcdir/openssl-$pkgver"
+# secfixes:
+# 1.1.a-r0:
+# - CVE-2018-0734
+# - CVE-2018-0735
+
build() {
local _target _optflags
cd "$builddir"
@@ -95,5 +98,4 @@ _libssl() {
done
}
-sha512sums="c0284a4fe84bdf765ca5bc5148da4441ffc36392cfecaf9d372af00cf93b6de5681cab1248b6f8246474532155dc205da5ad49549ad7c61c07c917145e7c9c71 openssl-1.1.1.tar.gz
-a4c809c23322fd1f8c40da9ce0c0ed6e1c58e47284087b6994322a7db70bbb2dc1ebed738b69dbebeed1eb6d0afccee12c48df78d0b7aa3f527b0007b624663d 0001-Use-secure_getenv-3-when-available.patch"
+sha512sums="1523985ba90f38aa91aa6c2d57652f4e243cb2a095ce6336bf34b39b5a9b5b876804299a6825c758b65990e57948da532cca761aa12b10958c97478d04dd6d34 openssl-1.1.1a.tar.gz"