Merge pull request #8196 from commodo/python-batch-updates
python,python3: batch updates
This commit is contained in:
commit
4eb0c6b2ab
16 changed files with 282 additions and 60 deletions
|
@ -8,12 +8,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=python-cryptography
|
PKG_NAME:=python-cryptography
|
||||||
PKG_VERSION:=2.4.2
|
PKG_VERSION:=2.5
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=cryptography-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=cryptography-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:= https://files.pythonhosted.org/packages/source/c/cryptography
|
PKG_SOURCE_URL:= https://files.pythonhosted.org/packages/source/c/cryptography
|
||||||
PKG_HASH:=05a6052c6a9f17ff78ba78f8e6eb1d777d25db3b763343a1ae89a7a8670386dd
|
PKG_HASH:=4946b67235b9d2ea7d31307be9d5ad5959d6c4a8f98f900157b47abddf698401
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0 BSD-3-Clause
|
PKG_LICENSE:=Apache-2.0 BSD-3-Clause
|
||||||
PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
|
PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
From e7a6229b332969d621aaf25f3fc5cdd99e3c9072 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rosen Penev <rosenp@gmail.com>
|
|
||||||
Date: Sun, 18 Nov 2018 18:04:01 -0800
|
|
||||||
Subject: [PATCH] Adjust DTLS check (#4593)
|
|
||||||
|
|
||||||
OpenSSL defines these even with OPENSSL_NO_DTLS.
|
|
||||||
---
|
|
||||||
src/_cffi_src/openssl/ssl.py | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/_cffi_src/openssl/ssl.py b/src/_cffi_src/openssl/ssl.py
|
|
||||||
index c921dbee..f0b8939c 100644
|
|
||||||
--- a/src/_cffi_src/openssl/ssl.py
|
|
||||||
+++ b/src/_cffi_src/openssl/ssl.py
|
|
||||||
@@ -709,7 +709,7 @@ static const long TLS_ST_BEFORE = 0;
|
|
||||||
static const long TLS_ST_OK = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#if defined(OPENSSL_NO_DTLS) || CRYPTOGRAPHY_OPENSSL_LESS_THAN_102
|
|
||||||
+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102
|
|
||||||
static const long Cryptography_HAS_GENERIC_DTLS_METHOD = 0;
|
|
||||||
const SSL_METHOD *(*DTLS_method)(void) = NULL;
|
|
||||||
const SSL_METHOD *(*DTLS_server_method)(void) = NULL;
|
|
|
@ -8,12 +8,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=python-lxml
|
PKG_NAME:=python-lxml
|
||||||
PKG_VERSION:=4.3.0
|
PKG_VERSION:=4.3.1
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=lxml-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=lxml-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/l/lxml
|
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/l/lxml
|
||||||
PKG_HASH:=d1e111b3ab98613115a208c1017f266478b0ab224a67bc8eac670fa0bad7d488
|
PKG_HASH:=da5e7e941d6e71c9c9a717c93725cda0708c2474f532e3680ac5e39ec57d224d
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-lxml-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-lxml-$(PKG_VERSION)
|
||||||
PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
|
PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
|
||||||
|
|
|
@ -40,6 +40,17 @@ process_filespec() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete_empty_dirs() {
|
||||||
|
local dst_dir="$1"
|
||||||
|
if [ -d "$dst_dir/usr" ] ; then
|
||||||
|
for _ in $(seq 1 10) ; do
|
||||||
|
find "$dst_dir/usr" -empty -type d -exec rmdir {} \; || continue
|
||||||
|
break
|
||||||
|
done
|
||||||
|
rmdir "$dst_dir/usr" || true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
ver="$1"
|
ver="$1"
|
||||||
src_dir="$2"
|
src_dir="$2"
|
||||||
dst_dir="$3"
|
dst_dir="$3"
|
||||||
|
@ -47,20 +58,24 @@ python="$4"
|
||||||
mode="$5"
|
mode="$5"
|
||||||
filespec="$6"
|
filespec="$6"
|
||||||
|
|
||||||
|
find "$src_dir" -name "*\.exe" -exec rm -f {} \;
|
||||||
|
|
||||||
process_filespec "$src_dir" "$dst_dir" "$filespec" || {
|
process_filespec "$src_dir" "$dst_dir" "$filespec" || {
|
||||||
echo "process filespec error-ed"
|
echo "process filespec error-ed"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usr_bin_dir="$dst_dir/usr/bin"
|
||||||
|
|
||||||
|
if [ -d "$usr_bin_dir" ] ; then
|
||||||
|
sed "1"'!'"b;s,^#"'!'".*python.*,#"'!'"/usr/bin/python${ver}," -i $usr_bin_dir/*
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$mode" == "sources" ] ; then
|
if [ "$mode" == "sources" ] ; then
|
||||||
# Copy only python source files
|
# Copy only python source files
|
||||||
find $dst_dir -not -type d -not -name "*\.py" | xargs rm -f
|
find "$dst_dir" -not -type d -not -name "*\.py" -exec rm -f {} \;
|
||||||
|
|
||||||
# Delete empty folders (if the case)
|
delete_empty_dirs "$dst_dir"
|
||||||
if [ -d "$dst_dir/usr" ] ; then
|
|
||||||
find $dst_dir/usr -type d | xargs rmdir --ignore-fail-on-non-empty
|
|
||||||
rmdir --ignore-fail-on-non-empty $dst_dir/usr
|
|
||||||
fi
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -73,19 +88,15 @@ legacy=
|
||||||
# So, we just stuck to un-optimized byte-codes,
|
# So, we just stuck to un-optimized byte-codes,
|
||||||
# which is still way better/faster than running
|
# which is still way better/faster than running
|
||||||
# Python sources all the time.
|
# Python sources all the time.
|
||||||
$python -m compileall $legacy -d '/' $dst_dir || {
|
$python -m compileall $legacy -d '/' "$dst_dir" || {
|
||||||
echo "python -m compileall err-ed"
|
echo "python -m compileall err-ed"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Delete source files and pyc [ un-optimized bytecode files ]
|
# Delete source files and pyc [ un-optimized bytecode files ]
|
||||||
# We may want to make this optimization thing configurable later, but not sure atm
|
# We may want to make this optimization thing configurable later, but not sure atm
|
||||||
find $dst_dir -type f -name "*\.py" | xargs rm -f
|
find "$dst_dir" -type f -name "*\.py" -exec rm -f {} \;
|
||||||
|
|
||||||
# Delete empty folders (if the case)
|
delete_empty_dirs "$dst_dir"
|
||||||
if [ -d "$dst_dir/usr" ] ; then
|
|
||||||
find $dst_dir/usr -type d | xargs rmdir --ignore-fail-on-non-empty
|
|
||||||
rmdir --ignore-fail-on-non-empty $dst_dir/usr
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -69,7 +69,6 @@ define PyPackage
|
||||||
|
|
||||||
define Package/$(1)/install
|
define Package/$(1)/install
|
||||||
$(call PyPackage/$(1)/install,$$(1))
|
$(call PyPackage/$(1)/install,$$(1))
|
||||||
find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
|
|
||||||
$(SHELL) $(python_mk_path)python-package-install.sh "2" \
|
$(SHELL) $(python_mk_path)python-package-install.sh "2" \
|
||||||
"$(PKG_INSTALL_DIR)" "$$(1)" \
|
"$(PKG_INSTALL_DIR)" "$$(1)" \
|
||||||
"$(HOST_PYTHON_BIN)" "$$(2)" \
|
"$(HOST_PYTHON_BIN)" "$$(2)" \
|
||||||
|
@ -113,7 +112,6 @@ define Build/Compile/PyMod
|
||||||
cd $(PKG_BUILD_DIR)/$(strip $(1)), \
|
cd $(PKG_BUILD_DIR)/$(strip $(1)), \
|
||||||
./setup.py $(2), \
|
./setup.py $(2), \
|
||||||
$(3))
|
$(3))
|
||||||
find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
PYTHON_PKG_SETUP_ARGS:=--single-version-externally-managed
|
PYTHON_PKG_SETUP_ARGS:=--single-version-externally-managed
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=python-pyasn1-modules
|
PKG_NAME:=python-pyasn1-modules
|
||||||
PKG_VERSION:=0.2.3
|
PKG_VERSION:=0.2.4
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=pyasn1-modules-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=pyasn1-modules-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/pyasn1-modules
|
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/pyasn1-modules
|
||||||
PKG_HASH:=d14fcb29dabecba3d7b360bf72327c26c385248a5d603cf6be5f566ce999b261
|
PKG_HASH:=a52090e8c5841ebbf08ae455146792d9ef3e8445b21055d3a3b7ed9c712b7c7c
|
||||||
|
|
||||||
PKG_LICENSE:=BSD-2-Clause
|
PKG_LICENSE:=BSD-2-Clause
|
||||||
PKG_LICENSE_FILES:=LICENSE.txt
|
PKG_LICENSE_FILES:=LICENSE.txt
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=python-pyopenssl
|
PKG_NAME:=python-pyopenssl
|
||||||
PKG_VERSION:=18.0.0
|
PKG_VERSION:=19.0.0
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=pyOpenSSL-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=pyOpenSSL-$(PKG_VERSION).tar.gz
|
||||||
|
|
||||||
PKG_SOURCE_URL:=https://pypi.io/packages/source/p/pyOpenSSL
|
PKG_SOURCE_URL:=https://pypi.io/packages/source/p/pyOpenSSL
|
||||||
PKG_HASH:=6488f1423b00f73b7ad5167885312bb0ce410d3312eb212393795b53c8caa580
|
PKG_HASH:=aeca66338f6de19d1aa46ed634c3b9ae519a64b458f8468aec688e7e3c20f200
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0
|
PKG_LICENSE:=Apache-2.0
|
||||||
PKG_LICENSE_FILES:=LICENSE
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
|
@ -12,7 +12,7 @@ include ../python-version.mk
|
||||||
|
|
||||||
PKG_NAME:=python
|
PKG_NAME:=python
|
||||||
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
|
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
|
||||||
PKG_RELEASE:=4
|
PKG_RELEASE:=5
|
||||||
|
|
||||||
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
|
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
|
||||||
|
|
|
@ -14,8 +14,6 @@ endef
|
||||||
|
|
||||||
define PyPackage/python-pip/install
|
define PyPackage/python-pip/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
|
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
|
||||||
# Adjust shebang to proper python location on target
|
|
||||||
sed "1s@.*@#\!/usr/bin/python$(PYTHON_VERSION)@" -i $(PKG_BUILD_DIR)/install-pip/bin/*
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/install-pip/bin/* $(1)/usr/bin
|
$(CP) $(PKG_BUILD_DIR)/install-pip/bin/* $(1)/usr/bin
|
||||||
$(CP) \
|
$(CP) \
|
||||||
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON_VERSION)/site-packages/pip \
|
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON_VERSION)/site-packages/pip \
|
||||||
|
|
|
@ -14,8 +14,6 @@ endef
|
||||||
|
|
||||||
define PyPackage/python-setuptools/install
|
define PyPackage/python-setuptools/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
|
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
|
||||||
# Adjust shebang to proper python location on target
|
|
||||||
sed "1s@.*@#\!/usr/bin/python$(PYTHON_VERSION)@" -i $(PKG_BUILD_DIR)/install-setuptools/bin/*
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/* $(1)/usr/bin
|
$(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/* $(1)/usr/bin
|
||||||
$(CP) \
|
$(CP) \
|
||||||
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/pkg_resources \
|
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/pkg_resources \
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
From 06b15424b0dcacb1c551b2a36e739fffa8d0c595 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Miss Islington (bot)"
|
||||||
|
<31488909+miss-islington@users.noreply.github.com>
|
||||||
|
Date: Tue, 15 Jan 2019 15:11:52 -0800
|
||||||
|
Subject: [PATCH] bpo-35746: Fix segfault in ssl's cert parser (GH-11569)
|
||||||
|
|
||||||
|
Fix a NULL pointer deref in ssl module. The cert parser did not handle CRL
|
||||||
|
distribution points with empty DP or URI correctly. A malicious or buggy
|
||||||
|
certificate can result into segfault.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Heimes <christian@python.org>
|
||||||
|
|
||||||
|
https://bugs.python.org/issue35746
|
||||||
|
(cherry picked from commit a37f52436f9aa4b9292878b72f3ff1480e2606c3)
|
||||||
|
|
||||||
|
Co-authored-by: Christian Heimes <christian@python.org>
|
||||||
|
---
|
||||||
|
Lib/test/talos-2019-0758.pem | 22 +++++++++++++++++++
|
||||||
|
Lib/test/test_ssl.py | 22 +++++++++++++++++++
|
||||||
|
.../2019-01-15-18-16-05.bpo-35746.nMSd0j.rst | 3 +++
|
||||||
|
Modules/_ssl.c | 4 ++++
|
||||||
|
4 files changed, 51 insertions(+)
|
||||||
|
create mode 100644 Lib/test/talos-2019-0758.pem
|
||||||
|
create mode 100644 Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst
|
||||||
|
|
||||||
|
diff --git a/Lib/test/talos-2019-0758.pem b/Lib/test/talos-2019-0758.pem
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..13b95a77fd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Lib/test/talos-2019-0758.pem
|
||||||
|
@@ -0,0 +1,22 @@
|
||||||
|
+-----BEGIN CERTIFICATE-----
|
||||||
|
+MIIDqDCCApKgAwIBAgIBAjALBgkqhkiG9w0BAQswHzELMAkGA1UEBhMCVUsxEDAO
|
||||||
|
+BgNVBAMTB2NvZHktY2EwHhcNMTgwNjE4MTgwMDU4WhcNMjgwNjE0MTgwMDU4WjA7
|
||||||
|
+MQswCQYDVQQGEwJVSzEsMCoGA1UEAxMjY29kZW5vbWljb24tdm0tMi50ZXN0Lmxh
|
||||||
|
+bC5jaXNjby5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC63fGB
|
||||||
|
+J80A9Av1GB0bptslKRIUtJm8EeEu34HkDWbL6AJY0P8WfDtlXjlPaLqFa6sqH6ES
|
||||||
|
+V48prSm1ZUbDSVL8R6BYVYpOlK8/48xk4pGTgRzv69gf5SGtQLwHy8UPBKgjSZoD
|
||||||
|
+5a5k5wJXGswhKFFNqyyxqCvWmMnJWxXTt2XDCiWc4g4YAWi4O4+6SeeHVAV9rV7C
|
||||||
|
+1wxqjzKovVe2uZOHjKEzJbbIU6JBPb6TRfMdRdYOw98n1VXDcKVgdX2DuuqjCzHP
|
||||||
|
+WhU4Tw050M9NaK3eXp4Mh69VuiKoBGOLSOcS8reqHIU46Reg0hqeL8LIL6OhFHIF
|
||||||
|
+j7HR6V1X6F+BfRS/AgMBAAGjgdYwgdMwCQYDVR0TBAIwADAdBgNVHQ4EFgQUOktp
|
||||||
|
+HQjxDXXUg8prleY9jeLKeQ4wTwYDVR0jBEgwRoAUx6zgPygZ0ZErF9sPC4+5e2Io
|
||||||
|
+UU+hI6QhMB8xCzAJBgNVBAYTAlVLMRAwDgYDVQQDEwdjb2R5LWNhggkA1QEAuwb7
|
||||||
|
+2s0wCQYDVR0SBAIwADAuBgNVHREEJzAlgiNjb2Rlbm9taWNvbi12bS0yLnRlc3Qu
|
||||||
|
+bGFsLmNpc2NvLmNvbTAOBgNVHQ8BAf8EBAMCBaAwCwYDVR0fBAQwAjAAMAsGCSqG
|
||||||
|
+SIb3DQEBCwOCAQEAvqantx2yBlM11RoFiCfi+AfSblXPdrIrHvccepV4pYc/yO6p
|
||||||
|
+t1f2dxHQb8rWH3i6cWag/EgIZx+HJQvo0rgPY1BFJsX1WnYf1/znZpkUBGbVmlJr
|
||||||
|
+t/dW1gSkNS6sPsM0Q+7HPgEv8CPDNK5eo7vU2seE0iWOkxSyVUuiCEY9ZVGaLVit
|
||||||
|
+p0C78nZ35Pdv4I+1cosmHl28+es1WI22rrnmdBpH8J1eY6WvUw2xuZHLeNVN0TzV
|
||||||
|
+Q3qq53AaCWuLOD1AjESWuUCxMZTK9DPS4JKXTK8RLyDeqOvJGjsSWp3kL0y3GaQ+
|
||||||
|
+10T1rfkKJub2+m9A9duin1fn6tHc2wSvB7m3DA==
|
||||||
|
+-----END CERTIFICATE-----
|
||||||
|
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
|
||||||
|
index e476031702..9240184d98 100644
|
||||||
|
--- a/Lib/test/test_ssl.py
|
||||||
|
+++ b/Lib/test/test_ssl.py
|
||||||
|
@@ -72,6 +72,7 @@ NONEXISTINGCERT = data_file("XXXnonexisting.pem")
|
||||||
|
BADKEY = data_file("badkey.pem")
|
||||||
|
NOKIACERT = data_file("nokia.pem")
|
||||||
|
NULLBYTECERT = data_file("nullbytecert.pem")
|
||||||
|
+TALOS_INVALID_CRLDP = data_file("talos-2019-0758.pem")
|
||||||
|
|
||||||
|
DHFILE = data_file("ffdh3072.pem")
|
||||||
|
BYTES_DHFILE = DHFILE.encode(sys.getfilesystemencoding())
|
||||||
|
@@ -227,6 +228,27 @@ class BasicSocketTests(unittest.TestCase):
|
||||||
|
self.assertEqual(p['crlDistributionPoints'],
|
||||||
|
('http://SVRIntl-G3-crl.verisign.com/SVRIntlG3.crl',))
|
||||||
|
|
||||||
|
+ def test_parse_cert_CVE_2019_5010(self):
|
||||||
|
+ p = ssl._ssl._test_decode_cert(TALOS_INVALID_CRLDP)
|
||||||
|
+ if support.verbose:
|
||||||
|
+ sys.stdout.write("\n" + pprint.pformat(p) + "\n")
|
||||||
|
+ self.assertEqual(
|
||||||
|
+ p,
|
||||||
|
+ {
|
||||||
|
+ 'issuer': (
|
||||||
|
+ (('countryName', 'UK'),), (('commonName', 'cody-ca'),)),
|
||||||
|
+ 'notAfter': 'Jun 14 18:00:58 2028 GMT',
|
||||||
|
+ 'notBefore': 'Jun 18 18:00:58 2018 GMT',
|
||||||
|
+ 'serialNumber': '02',
|
||||||
|
+ 'subject': ((('countryName', 'UK'),),
|
||||||
|
+ (('commonName',
|
||||||
|
+ 'codenomicon-vm-2.test.lal.cisco.com'),)),
|
||||||
|
+ 'subjectAltName': (
|
||||||
|
+ ('DNS', 'codenomicon-vm-2.test.lal.cisco.com'),),
|
||||||
|
+ 'version': 3
|
||||||
|
+ }
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
def test_parse_cert_CVE_2013_4238(self):
|
||||||
|
p = ssl._ssl._test_decode_cert(NULLBYTECERT)
|
||||||
|
if support.verbose:
|
||||||
|
diff --git a/Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst b/Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..dffe347eec
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+[CVE-2019-5010] Fix a NULL pointer deref in ssl module. The cert parser did
|
||||||
|
+not handle CRL distribution points with empty DP or URI correctly. A
|
||||||
|
+malicious or buggy certificate can result into segfault.
|
||||||
|
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
|
||||||
|
index a96c419260..19bb1207b4 100644
|
||||||
|
--- a/Modules/_ssl.c
|
||||||
|
+++ b/Modules/_ssl.c
|
||||||
|
@@ -1223,6 +1223,10 @@ _get_crl_dp(X509 *certificate) {
|
||||||
|
STACK_OF(GENERAL_NAME) *gns;
|
||||||
|
|
||||||
|
dp = sk_DIST_POINT_value(dps, i);
|
||||||
|
+ if (dp->distpoint == NULL) {
|
||||||
|
+ /* Ignore empty DP value, CVE-2019-5010 */
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
gns = dp->distpoint->name.fullname;
|
||||||
|
|
||||||
|
for (j=0; j < sk_GENERAL_NAME_num(gns); j++) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
|
@ -68,7 +68,6 @@ define Py3Package
|
||||||
|
|
||||||
define Package/$(1)/install
|
define Package/$(1)/install
|
||||||
$(call Py3Package/$(1)/install,$$(1))
|
$(call Py3Package/$(1)/install,$$(1))
|
||||||
find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
|
|
||||||
$(SHELL) $(python3_mk_path)python-package-install.sh "3" \
|
$(SHELL) $(python3_mk_path)python-package-install.sh "3" \
|
||||||
"$(PKG_INSTALL_DIR)" "$$(1)" \
|
"$(PKG_INSTALL_DIR)" "$$(1)" \
|
||||||
"$(HOST_PYTHON3_BIN)" "$$(2)" \
|
"$(HOST_PYTHON3_BIN)" "$$(2)" \
|
||||||
|
@ -112,7 +111,6 @@ define Build/Compile/Py3Mod
|
||||||
cd $(PKG_BUILD_DIR)/$(strip $(1)), \
|
cd $(PKG_BUILD_DIR)/$(strip $(1)), \
|
||||||
./setup.py $(2), \
|
./setup.py $(2), \
|
||||||
$(3))
|
$(3))
|
||||||
find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
PYTHON3_PKG_SETUP_ARGS:=--single-version-externally-managed
|
PYTHON3_PKG_SETUP_ARGS:=--single-version-externally-managed
|
||||||
|
|
|
@ -14,7 +14,7 @@ PYTHON_VERSION:=$(PYTHON3_VERSION)
|
||||||
PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
|
PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
|
||||||
|
|
||||||
PKG_NAME:=python3
|
PKG_NAME:=python3
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=4
|
||||||
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
|
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
|
||||||
|
|
||||||
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
|
||||||
|
|
|
@ -14,14 +14,15 @@ endef
|
||||||
|
|
||||||
define Package/python3-pip/install
|
define Package/python3-pip/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
||||||
# Adjust shebang to proper python location on target
|
|
||||||
sed "1s@.*@#\!/usr/bin/python$(PYTHON3_VERSION)@" -i $(PKG_BUILD_DIR)/install-pip/bin/*
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/install-pip/bin/pip3* $(1)/usr/bin
|
$(CP) $(PKG_BUILD_DIR)/install-pip/bin/pip3* $(1)/usr/bin
|
||||||
$(CP) \
|
$(CP) \
|
||||||
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip \
|
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip \
|
||||||
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip-$(PYTHON3_PIP_VERSION).dist-info \
|
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip-$(PYTHON3_PIP_VERSION).dist-info \
|
||||||
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/
|
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/
|
||||||
find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ | xargs rm -rf
|
for _ in \$(seq 1 10) ; do \
|
||||||
|
find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ -exec rm -rf {} \; || continue ; \
|
||||||
|
break ; \
|
||||||
|
done
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call Py3BasePackage,python3-pip, \
|
$(eval $(call Py3BasePackage,python3-pip, \
|
||||||
|
|
|
@ -14,8 +14,6 @@ endef
|
||||||
|
|
||||||
define Py3Package/python3-setuptools/install
|
define Py3Package/python3-setuptools/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
||||||
# Adjust shebang to proper python location on target
|
|
||||||
sed "1s@.*@#\!/usr/bin/python$(PYTHON3_VERSION)@" -i $(PKG_BUILD_DIR)/install-setuptools/bin/*
|
|
||||||
$(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/easy_install-* $(1)/usr/bin
|
$(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/easy_install-* $(1)/usr/bin
|
||||||
$(LN) easy_install-$(PYTHON3_VERSION) $(1)/usr/bin/easy_install-3
|
$(LN) easy_install-$(PYTHON3_VERSION) $(1)/usr/bin/easy_install-3
|
||||||
$(CP) \
|
$(CP) \
|
||||||
|
@ -24,7 +22,10 @@ define Py3Package/python3-setuptools/install
|
||||||
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/setuptools-$(PYTHON3_SETUPTOOLS_VERSION).dist-info \
|
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/setuptools-$(PYTHON3_SETUPTOOLS_VERSION).dist-info \
|
||||||
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/easy_install.py \
|
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/easy_install.py \
|
||||||
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
||||||
find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ | xargs rm -rf
|
for _ in \$(seq 1 10) ; do \
|
||||||
|
find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ -exec rm -rf {} \; || continue ; \
|
||||||
|
break ; \
|
||||||
|
done
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call Py3BasePackage,python3-setuptools, \
|
$(eval $(call Py3BasePackage,python3-setuptools, \
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
From be5de958e9052e322b0087c6dba81cdad0c3e031 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Miss Islington (bot)"
|
||||||
|
<31488909+miss-islington@users.noreply.github.com>
|
||||||
|
Date: Tue, 15 Jan 2019 15:03:36 -0800
|
||||||
|
Subject: [PATCH] bpo-35746: Fix segfault in ssl's cert parser (GH-11569)
|
||||||
|
|
||||||
|
Fix a NULL pointer deref in ssl module. The cert parser did not handle CRL
|
||||||
|
distribution points with empty DP or URI correctly. A malicious or buggy
|
||||||
|
certificate can result into segfault.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Heimes <christian@python.org>
|
||||||
|
|
||||||
|
https://bugs.python.org/issue35746
|
||||||
|
(cherry picked from commit a37f52436f9aa4b9292878b72f3ff1480e2606c3)
|
||||||
|
|
||||||
|
Co-authored-by: Christian Heimes <christian@python.org>
|
||||||
|
---
|
||||||
|
Lib/test/talos-2019-0758.pem | 22 +++++++++++++++++++
|
||||||
|
Lib/test/test_ssl.py | 22 +++++++++++++++++++
|
||||||
|
.../2019-01-15-18-16-05.bpo-35746.nMSd0j.rst | 3 +++
|
||||||
|
Modules/_ssl.c | 4 ++++
|
||||||
|
4 files changed, 51 insertions(+)
|
||||||
|
create mode 100644 Lib/test/talos-2019-0758.pem
|
||||||
|
create mode 100644 Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst
|
||||||
|
|
||||||
|
diff --git a/Lib/test/talos-2019-0758.pem b/Lib/test/talos-2019-0758.pem
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..13b95a77fd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Lib/test/talos-2019-0758.pem
|
||||||
|
@@ -0,0 +1,22 @@
|
||||||
|
+-----BEGIN CERTIFICATE-----
|
||||||
|
+MIIDqDCCApKgAwIBAgIBAjALBgkqhkiG9w0BAQswHzELMAkGA1UEBhMCVUsxEDAO
|
||||||
|
+BgNVBAMTB2NvZHktY2EwHhcNMTgwNjE4MTgwMDU4WhcNMjgwNjE0MTgwMDU4WjA7
|
||||||
|
+MQswCQYDVQQGEwJVSzEsMCoGA1UEAxMjY29kZW5vbWljb24tdm0tMi50ZXN0Lmxh
|
||||||
|
+bC5jaXNjby5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC63fGB
|
||||||
|
+J80A9Av1GB0bptslKRIUtJm8EeEu34HkDWbL6AJY0P8WfDtlXjlPaLqFa6sqH6ES
|
||||||
|
+V48prSm1ZUbDSVL8R6BYVYpOlK8/48xk4pGTgRzv69gf5SGtQLwHy8UPBKgjSZoD
|
||||||
|
+5a5k5wJXGswhKFFNqyyxqCvWmMnJWxXTt2XDCiWc4g4YAWi4O4+6SeeHVAV9rV7C
|
||||||
|
+1wxqjzKovVe2uZOHjKEzJbbIU6JBPb6TRfMdRdYOw98n1VXDcKVgdX2DuuqjCzHP
|
||||||
|
+WhU4Tw050M9NaK3eXp4Mh69VuiKoBGOLSOcS8reqHIU46Reg0hqeL8LIL6OhFHIF
|
||||||
|
+j7HR6V1X6F+BfRS/AgMBAAGjgdYwgdMwCQYDVR0TBAIwADAdBgNVHQ4EFgQUOktp
|
||||||
|
+HQjxDXXUg8prleY9jeLKeQ4wTwYDVR0jBEgwRoAUx6zgPygZ0ZErF9sPC4+5e2Io
|
||||||
|
+UU+hI6QhMB8xCzAJBgNVBAYTAlVLMRAwDgYDVQQDEwdjb2R5LWNhggkA1QEAuwb7
|
||||||
|
+2s0wCQYDVR0SBAIwADAuBgNVHREEJzAlgiNjb2Rlbm9taWNvbi12bS0yLnRlc3Qu
|
||||||
|
+bGFsLmNpc2NvLmNvbTAOBgNVHQ8BAf8EBAMCBaAwCwYDVR0fBAQwAjAAMAsGCSqG
|
||||||
|
+SIb3DQEBCwOCAQEAvqantx2yBlM11RoFiCfi+AfSblXPdrIrHvccepV4pYc/yO6p
|
||||||
|
+t1f2dxHQb8rWH3i6cWag/EgIZx+HJQvo0rgPY1BFJsX1WnYf1/znZpkUBGbVmlJr
|
||||||
|
+t/dW1gSkNS6sPsM0Q+7HPgEv8CPDNK5eo7vU2seE0iWOkxSyVUuiCEY9ZVGaLVit
|
||||||
|
+p0C78nZ35Pdv4I+1cosmHl28+es1WI22rrnmdBpH8J1eY6WvUw2xuZHLeNVN0TzV
|
||||||
|
+Q3qq53AaCWuLOD1AjESWuUCxMZTK9DPS4JKXTK8RLyDeqOvJGjsSWp3kL0y3GaQ+
|
||||||
|
+10T1rfkKJub2+m9A9duin1fn6tHc2wSvB7m3DA==
|
||||||
|
+-----END CERTIFICATE-----
|
||||||
|
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
|
||||||
|
index f1b9565c8d..b6794ce3a8 100644
|
||||||
|
--- a/Lib/test/test_ssl.py
|
||||||
|
+++ b/Lib/test/test_ssl.py
|
||||||
|
@@ -116,6 +116,7 @@ NONEXISTINGCERT = data_file("XXXnonexisting.pem")
|
||||||
|
BADKEY = data_file("badkey.pem")
|
||||||
|
NOKIACERT = data_file("nokia.pem")
|
||||||
|
NULLBYTECERT = data_file("nullbytecert.pem")
|
||||||
|
+TALOS_INVALID_CRLDP = data_file("talos-2019-0758.pem")
|
||||||
|
|
||||||
|
DHFILE = data_file("ffdh3072.pem")
|
||||||
|
BYTES_DHFILE = os.fsencode(DHFILE)
|
||||||
|
@@ -365,6 +366,27 @@ class BasicSocketTests(unittest.TestCase):
|
||||||
|
self.assertEqual(p['crlDistributionPoints'],
|
||||||
|
('http://SVRIntl-G3-crl.verisign.com/SVRIntlG3.crl',))
|
||||||
|
|
||||||
|
+ def test_parse_cert_CVE_2019_5010(self):
|
||||||
|
+ p = ssl._ssl._test_decode_cert(TALOS_INVALID_CRLDP)
|
||||||
|
+ if support.verbose:
|
||||||
|
+ sys.stdout.write("\n" + pprint.pformat(p) + "\n")
|
||||||
|
+ self.assertEqual(
|
||||||
|
+ p,
|
||||||
|
+ {
|
||||||
|
+ 'issuer': (
|
||||||
|
+ (('countryName', 'UK'),), (('commonName', 'cody-ca'),)),
|
||||||
|
+ 'notAfter': 'Jun 14 18:00:58 2028 GMT',
|
||||||
|
+ 'notBefore': 'Jun 18 18:00:58 2018 GMT',
|
||||||
|
+ 'serialNumber': '02',
|
||||||
|
+ 'subject': ((('countryName', 'UK'),),
|
||||||
|
+ (('commonName',
|
||||||
|
+ 'codenomicon-vm-2.test.lal.cisco.com'),)),
|
||||||
|
+ 'subjectAltName': (
|
||||||
|
+ ('DNS', 'codenomicon-vm-2.test.lal.cisco.com'),),
|
||||||
|
+ 'version': 3
|
||||||
|
+ }
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
def test_parse_cert_CVE_2013_4238(self):
|
||||||
|
p = ssl._ssl._test_decode_cert(NULLBYTECERT)
|
||||||
|
if support.verbose:
|
||||||
|
diff --git a/Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst b/Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..dffe347eec
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Misc/NEWS.d/next/Security/2019-01-15-18-16-05.bpo-35746.nMSd0j.rst
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+[CVE-2019-5010] Fix a NULL pointer deref in ssl module. The cert parser did
|
||||||
|
+not handle CRL distribution points with empty DP or URI correctly. A
|
||||||
|
+malicious or buggy certificate can result into segfault.
|
||||||
|
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
|
||||||
|
index 9894ad821d..9baec8a9bc 100644
|
||||||
|
--- a/Modules/_ssl.c
|
||||||
|
+++ b/Modules/_ssl.c
|
||||||
|
@@ -1516,6 +1516,10 @@ _get_crl_dp(X509 *certificate) {
|
||||||
|
STACK_OF(GENERAL_NAME) *gns;
|
||||||
|
|
||||||
|
dp = sk_DIST_POINT_value(dps, i);
|
||||||
|
+ if (dp->distpoint == NULL) {
|
||||||
|
+ /* Ignore empty DP value, CVE-2019-5010 */
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
gns = dp->distpoint->name.fullname;
|
||||||
|
|
||||||
|
for (j=0; j < sk_GENERAL_NAME_num(gns); j++) {
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
Loading…
Reference in a new issue