Commit Graph

93 Commits

Author SHA1 Message Date
Jeffery To f7a8607579
python3: Update to 3.7.17
This includes an updated patch for pip, as the bundled pip was also
updated with this release.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2023-06-12 17:35:45 +08:00
Jeffery To 509f4e2f83
python3: Update to 3.7.16, refresh patches
Includes fixes:

* 3.7.14:
  * CVE-2020-10735: Prevent DoS by large int<->str conversions
  * CVE-2021-28861: http.server: Open Redirection if the URL path starts with //

* 3.7.16:
  * CVE-2022-45061: Slow IDNA decoding with large strings
  * CVE-2022-37454: Buffer overflow in the _sha3 module
  * CVE-2015-20107: mailcap.findmatch: document shell command Injection danger in filename parameter

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2023-03-16 15:05:35 +08:00
Jeffery To 3398ed29b0
python3: Update to 3.7.13, refresh patches
Includes fixes for:
* Windows builds updated to bzip2 1.0.8 to mitigate CVE-2016-3189 and
  CVE-2019-12900
* CVE-2022-26488: Escalation of privilege via Windows Installer

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2022-03-22 02:16:36 +08:00
Josef Schlehofer 17f5a0cc83
python3: update to version 3.7.12
Fixes: CVE-2013-0340 (Windows and MacOS only) and smtplib multiple CRLF injection
Changelog: https://www.python.org/downloads/release/python-3712/

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2021-09-08 13:06:36 +02:00
Josef Schlehofer b18aab0d13
python3: update to version 3.7.11
Fixes: CVE-2021-3426

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2021-07-06 09:15:33 +02:00
Jeffery To f05ba1bbca
python3: Update to 3.7.10, refresh patches
Includes fixes for:
* CVE-2021-3177 - ctypes: Buffer overflow in PyCArg_repr
* CVE-2021-23336 - urllib parse_qsl(): Web cache poisoning - semicolon
  as a query args separator

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2021-02-22 21:05:28 +08:00
Jeffery To acb77d5beb
python3: Update to 3.7.9, refresh/remove backported patches
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-17 01:35:19 +08:00
Rosen Penev 37857a3f2f python3: fix host compilation with clang
Matched rpath parameter with Makefile.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit b40c40151c)
2020-08-15 15:21:32 -07:00
Jeffery To ddb0af4061
python3: Backport security fixes
This backports fixes for security issues, including:
* CVE-2020-14422: Hash collisions in IPv4Interface and IPv6Interface
* CVE-2019-20907: Infinite loop in the tarfile module

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-07-20 17:39:42 +08:00
Jeffery To 4b0c1f8714
python3: Use default _PYTHON_HOST_PLATFORM
This lets the Python build process set _PYTHON_HOST_PLATFORM instead of
forcing an explicit value.

Also:

* Save the target _PYTHON_HOST_PLATFORM value during Build/InstallDev
  for use when building target Python packages (in python3-package.mk).

* Use the (mostly) default PYTHON_FOR_BUILD value, instead patch
  configure to remove the platform triplet from the sysconfigdata file
  name.

* Remove the "CROSS_COMPILE=yes" make variable (there is no indication
  that this variable is necessary).

* Force host pip to build packages from source instead of downloading
  binary wheels.

  Previously, host pip can download universal (platform-independent)
  wheels but not platform-specific wheels, because of the custom
  _PYTHON_HOST_PLATFORM value. (Packages that do not have universal
  wheels would be compiled from source.)

  With a correct _PYTHON_HOST_PLATFORM, host pip can install
  platform-specific wheels as well. However, the pre-built shared object
  (.so) files in these wheels will have the host's platform triplet in
  their file names. When target Python packages are built (using the
  target's _PYTHON_HOST_PLATFORM), Python will not use these shared
  object files.

  By forcing host pip to build packages from source, the built shared
  object files will not have the platform triplet in their file names.
  (Host Python has been patched to remove the platform triplet from file
  names.) This allows these packages to be used when building target
  Python packages.

  (The net effect of this complete change is that platform-dependent
  packages will continue to be compiled from source, while
  platform-independent packages will now also be compiled from source.)

Fixes https://github.com/openwrt/packages/issues/12680.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-07-08 17:12:33 +08:00
Jeffery To d78bdbd8ad
python3: Update to 3.7.8, refresh/rework patches
This contains a fix for CVE-2020-8492 (Denial of service in
urllib.request.AbstractBasicAuthHandler)[1].

This also updates the setuptools and pip packages to 47.1.0 and 20.1.1,
respectively.

[1]: https://docs.python.org/release/3.7.8/whatsnew/changelog.html#python-3-7-8-release-candidate-1

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-06-30 21:20:18 +08:00
Jeffery To c32e08f308 python3-openssl: Add dependency on ca-certs
The ssl module assumes OpenSSL can load the default trust anchors (root
CA certificates).

From https://github.com/openwrt/packages/issues/12209

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
(cherry picked from commit d2b0cc523d)
2020-05-20 04:36:07 +08:00
Jeffery To 3d2dc69200 python3: Fix host build tool names recorded in target files
Python will record the values of CC, CXX, AR, and READELF (and other
configure options) used during compilation. pip will use these programs
when asked to compile extension modules on the target device.

* If ccache is used during build, CC and CXX will be ccache_cc and
  ccache_cxx, respectively, which are not available on-device (#11912).

* If an external toolchain is used during build, the values of these
  variables will contain the external toolchain prefix, which may not be
  available on target.

* If the normal toolchain is used during build, AR and READELF will
  contain the toolchain prefix, but the names of ar and readelf
  on-device do not contain the prefix; they are named "ar" and
  "readelf".

This changes the values of these variables in Python's files to match
the names available on-device, and without any toolchain prefix.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
(cherry picked from commit 9f81ab895e)
2020-04-28 13:56:47 +08:00
Josef Schlehofer fd4da96672
python3: update to version 3.7.7
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2020-03-14 00:47:42 +01:00
Jeffery To ad50eb7c0a python3: Fix float byte order detection
This backports patches from bpo-34585[1] to fix byte order detection of
floats.

Fixing byte order detection allows the repr() of floats to be
shorter[2]. sys.float_repr_style should be 'short' instead of 'legacy'
on supported platforms.

See #11134.

[1]: https://bugs.python.org/issue34585
[2]: https://docs.python.org/3.8/whatsnew/3.1.html#other-language-changes

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-30 19:12:25 +08:00
Alexandru Ardelean e847333d15 python,python3: split python[3]-pkg-resources from setuptools
This package is required by other packages to run some binaries via
`load_entry_point`.

So, this splits this package away from setuptools.
setuptools is pretty big, akd pkg-resources is also big, but not as big.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>

(cherry picked from commit ed0e77f3c3)
Reference to discussion at
c61579b564 (commitcomment-36665837)
Adjusted python PKG_RELEASE items to current situation
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2020-01-10 18:57:16 +02:00
Josef Schlehofer c5d6ffaf1c
python3: Updated to version 3.7.6
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2019-12-21 14:35:31 +01:00
Josef Schlehofer 0882737b4a
python3: Update to version 3.7.5
setuptools: Updated to version 41.2.0
pip: Updated to version 19.2.3

Removed patches:
- 017: code was refactored
- 02{5,6,7,8}: those patches were backported from upstream and they are
included in 3.7.5

Refreshed patches

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2019-10-21 15:19:32 +02:00
Jeffery To 18add705fa python,python3: Fix CVE-2019-16056, CVE-2019-16935
These patches address issues:
CVE-2019-16056: email.utils.parseaddr mistakenly parse an email
CVE-2019-16935: A reflected XSS in python/Lib/DocXMLRPCServer.py (for
Python 2.7)

CVE-2019-16935 was fixed for python3 in #10109

Links to Python issues:
https://bugs.python.org/issue34155
https://bugs.python.org/issue38243

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-10-05 00:04:39 +08:00
Josef Schlehofer faf6ec5800
python3: backport three security patches
Fixes: CVE-2019-16935

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
(cherry-picked from commit 80def9e)
2019-09-30 10:02:40 +02:00
Jeffery To e450748208 python,python3: Fix host Python compilation for macOS
* Remove $$$$(pkg-config --static --libs libcrypto libssl) from
  HOST_LDFLAGS

  Having this leads to an "unknown type name 'u_int'" error on Mac.
  Removing it doesn't appear to affect Python's ability to find
  buildroot LibreSSL.

* Change -Wl,-rpath=... to -Wl,-rpath,... in HOST_LDFLAGS

  The equals sign version is not supported by the Mac linker (appears to
  be an GNU extension). The comma version is supported; -rpath and its
  argument will be separated by a space when passed to the linker.

* Add ac_cv_header_libintl_h=no to HOST_CONFIGURE_VARS for Mac

  Python on Mac doesn't expect to use libintl, but if gettext-full is
  compiled for host, it will try, leading to undefined symbol errors
  during compilation. This prevents configure from finding libintl.h.

Fixes #7171.
Fixes #9621.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-08-17 05:14:42 +08:00
Jeffery To 2d6700ed38 python,python3: Fix ctypes.util.find_library()
Python's ctypes.util.find_library() function currently doesn't work for
musl libraries/systems[1].

This adds a patch to fix this function, based on a patch from Alpine
Linux[2].

Fixes #9448.

[1]: https://bugs.python.org/issue21622
[2]: https://git.alpinelinux.org/aports/tree/main/python2/musl-find_library.patch

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-07-22 04:52:27 +08:00
Josef Schlehofer 34f8cf530d
python3: Update to version 3.7.4
- Update setuptools to 40.8.0
- Update pip to 19.0.3
- Refreshed patches
- Removed 4 patches (2 of them was included in 3.7.3 and other two are
included in this release)

Makefile python3:
- Move PKG_MAINTAINER above PKG_LICENSE

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
(cherry-picked from ce769db007)
2019-07-10 10:16:47 +02:00
Eneas U de Queiroz 493cc51a4d
python3: use _python_sysroot for cross-compilation
This patch, taken from buildroot, avoids the use of host paths when
compiling third-party extensions.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
(cherry-picked from 523c52f6f2)
2019-07-10 10:16:29 +02:00
Jeffery To 64959a1dd0 python,python3: Move python-config to $(STAGING_DIR)/host
Build/InstallDev is passed a second argument, a path where host binaries
should be placed (ultimately $(STAGING_DIR)/host).

This change moves python[3]-config to that directory.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-10 20:33:06 +08:00
Rosen Penev 8f0f613af0
Merge pull request #9131 from jefferyto/python-bpo-35907
python,python3: Fix CVE-2019-9948 - local_file:// allowed in urllib
2019-06-05 01:23:46 -07:00
Jeffery To 53838903fe python,python3: Fix CVE-2019-9948 - local_file:// allowed in urllib
These patches address issue:
CVE-2019-9948: Unnecessary URL scheme exists to allow local_file://
reading file in urllib

Link to Python issue:
https://bugs.python.org/issue35907

Issue 35907 is still currently open, waiting for a decision for
Python 3.5; these patches for Python 2.7 and 3.7 have been merged.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-04 22:20:21 +08:00
Hannu Nyman 1e39f3189b
Merge pull request #9114 from jefferyto/python-host-setuptools-pip-installed-pkg-release
python,python3: Record PKG_RELEASE for host setuptools/pip
2019-06-03 17:02:44 +03:00
Rosen Penev 15a0606403
Merge pull request #9100 from jefferyto/isolate-host-python
python,python3: Better isolate host Python
2019-06-03 02:11:20 -07:00
Jeffery To 9331fbb1a0 python,python3: Fix CVE-2019-9740 and CVE-2019-9947
These patches address issues:
CVE-2019-9740: Python urllib CRLF injection vulnerability
CVE-2019-9947: Header Injection in urllib

Links to Python issues:
https://bugs.python.org/issue36276 (resolved duplicated of 30458)
https://bugs.python.org/issue35906 (resolved duplicated of 30458)
https://bugs.python.org/issue30458

Issue 30458 is still currently open, waiting for a decision for
Python 3.5; these patches for Python 2.7 and 3.7 have been merged.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-03 00:38:53 +08:00
Jeffery To 1f1eacc484 python,python3: Record PKG_RELEASE for host setuptools/pip
This changes the "patched" indicator files for host setuptools and pip
to include their PKG_RELEASE values. This also removes host setuptools
and/or pip before host install, if the installed copy does not match the
version (and PKG_RELEASE) of the copy to be installed.

This will allow added or removed patches to affect host setuptools /
pip, since these changes will cause PKG_RELEASE to be incremented.

This also fixes the host install error, when the install tries to patch
an already patched copy of setuptools. (This error occurs because the
existing indicator files do not have version numbers in their file
names, whereas host install expected version numbers to be present.)

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-01 03:52:23 +08:00
Hannu Nyman e3dbc87bd9
Merge pull request #9103 from jefferyto/python-host-patch-upgraded-setuptools-pip
python,python3: Allow upgraded host setuptools/pip to be patched
2019-05-30 11:11:26 +03:00
Hannu Nyman b7e689aefd
Merge pull request #9101 from jefferyto/python-setuptools-pip-install
python-setuptools,python-pip: Installation changes
2019-05-30 11:10:23 +03:00
Jeffery To e074cbc285 python,python3: Allow upgraded host setuptools/pip to be patched
This adds the current setuptools/pip version numbers to the indicator
files' names, which should allow upgraded versions to be patched.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-30 01:48:29 +08:00
Jeffery To be751236aa python-setuptools,python-pip: Change prefix to /usr
This changes the --prefix option, passed to host pip when "installing"
target setuptools and pip, to /usr, in case the prefix is recorded in
the packages.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-29 22:38:30 +08:00
Jeffery To 688825f37a python-setuptools,python-pip: Set pip cache dir, disable version check
This adds --cache-dir and --disable-pip-version-check options for host
pip, when "installing" target setuptools and pip.

This also changes the pip command to use $(HOST_PYTHON[3]_PIP) from
python[3]-host.mk.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-29 22:29:20 +08:00
Jeffery To 87a31e49f7 python,python3: Disable user site-packages for host Python
Normally, Python will include the user's site-packages directory
(~/.local/lib/python$(PYTHON_VERSION)/site-packages) in it's internal
search path for modules.

This disables this default inclusion for host Python.

This change is applied during Host/Configure instead of as a patch to
keep this setting unchanged for target Python.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-29 22:03:18 +08:00
Jeffery To af5288827e python,python3: Use ensurepip=upgrade for host Python
This changes --with-ensurepip=install to upgrade, to upgrade host
versions of setuptools and pip to the Python-bundled versions.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-28 20:27:13 +08:00
Jeffery To da35e6770d python-setuptools: Add reproducibility patches from Debian
This adds the ability to patch setuptools (and pip), and adds 3
reproducibility patches from Debian[1].
(003-PKG-INFO-output-reproducible.patch addresses the issue identified
in #9039.)

The patching is not perfect, in that the patches are applied to
setuptools and pip after they have been installed, since they are
installed from wheels which are already "precompiled".

Also, patching for the host install cannot be updated in place, for
example if a patch is added or removed.

[1]: https://sources.debian.org/patches/python-setuptools/40.8.0-1/

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-24 13:18:09 +08:00
Eneas U de Queiroz 00f90974b6
python3: refresh LICENSE information
Changed PKG_LICENSE to reflect spdx license tag, and PKG_LICENSE_FILES
to include all lincense-related files applicable to the parts of the
code we are actually using to build and/or distributing.  The
Windows-only files, and the python-bundled Tools we're not using have
been left out.

Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
2019-05-20 18:20:43 -03:00
Jeffery To 8de8ff4f25 python,python3: Include python-config for target Python in InstallDev
This installs python{2.7,3.7}-config in $(STAGING_DIR)/usr/bin as part
of Build/InstallDev, to be used by other packages to get build
configuration for target Python.

The treatment for Python 2 and 3 are a bit different:

* For Python 2, python-config is a Python script that is expected to be
  run with, and return data for, the installed Python interpreter. This
  installs a modified version of this script, to be run using host
  Python, and read/return data for target Python.

* Python 3 includes a shell script version of python-config (expected to
  be used in cross-compilation scenarios). This simply installs the
  script into the right place.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-03-31 19:33:12 +08:00
Jeffery To c23bea8dc8 python,python3: Fix CVE-2019-9636 - urlsplit missing NFKC normalization
These patches address issue:
CVE-2019-9636: urlsplit does not handle NFKC normalization

Link to Python issue:
https://bugs.python.org/issue36216

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-03-31 05:18:14 +08:00
Jeffery To e436e73f1c python,python3: Use only target package data for Build/InstallDev
This changes Build/InstallDev for both Python 2 and 3 to only copy files
from target Python, not from host Python, since InstallDev files are
used for target packages to link to other target packages.

In particular, usr/lib/python{2.7,3.7}/_sysconfigdata.py holds system
configuration data generated at build time, and is different for target
Python and host Python.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-03-27 03:44:31 +08:00
Alexandru Ardelean b485a90aa3 python3: remove OpenSSL deprecated API patch
Fixes: https://github.com/openwrt/packages/issues/8399

These 2 patches cause some breakage for other packages.
For now, we drop them and wait for upstream to finalize a fix.
We can live with deprecated SSL APIs for a while. No need to hurry, since
this doesn't seem to help.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-03-19 14:09:03 +08:00
Hannu Nyman f9dd076a46
Merge pull request #8371 from neheb/patch-1
python: Add PKG_CPE_ID for proper CVE tracking
2019-03-12 19:06:41 +02:00
Rosen Penev 3b935060e8 python3: Fix compilation with deprecated OpenSSL APIs
Also refreshed patches.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-03-11 15:08:09 -07:00
Rosen Penev 1d04e54651 python: Add PKG_CPE_ID for proper CVE tracking
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-03-11 13:14:26 -07:00
Hannu Nyman b710d098f2
Merge pull request #8307 from commodo/python3-split-urllib
python3: split python3-urllib from python3-light
2019-03-01 23:06:25 +02:00
Alexandru Ardelean 998ff3471a python,python3: add Jeffery To as co-maintainer
For a while now, Jeffery has helped quite a lot with Python, and is now
unofficial go-to guy [for problems] with Python packages.

This change adds him as co-maintainer [if he also agrees].

I'm not going away; I'll be still doing the same work for Python.
This change serves to recognize Jeffery in an official way, since he's
already taking on these things. And 2 co-maintainers is better in case one
kicks the bucket [by accident].

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-02-27 12:33:27 +02:00
Alexandru Ardelean 82981d1d55 python3: split python3-urllib from python3-light
This is the result of this discussion:
  https://github.com/openwrt/packages/issues/8285

`urllib.request` requires the `email` module/lib, which was part of
python3-light.
This change moves the Lib/urllib folder from the python3-light into it's
own package, making it lighter. At least this way, users that want `urllib`
(on top of `python3-light`) will be forced to install it via opkg and this
will make sure `python3-email` gets installed as well.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-02-26 15:37:48 +02:00