commit python313 for openSUSE:Factory
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python313 for openSUSE:Factory checked in at 2024-08-08 10:58:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python313 (Old) and /work/SRC/openSUSE:Factory/.python313.new.7232 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python313" Thu Aug 8 10:58:35 2024 rev:4 rq:1192376 version:3.13.0~rc1 Changes: -------- --- /work/SRC/openSUSE:Factory/python313/python313.changes 2024-07-25 16:00:13.093893554 +0200 +++ /work/SRC/openSUSE:Factory/.python313.new.7232/python313.changes 2024-08-08 10:59:07.821425586 +0200 @@ -1,0 +2,97 @@ +Wed Aug 7 13:40:44 UTC 2024 - Matej Cepl <mcepl@cepl.eu> + +- Add CVE-2024-6923-email-hdr-inject.patch to prevent email + header injection due to unquoted newlines (bsc#1228780, + CVE-2024-6923). +- Adding bso1227999-reproducible-builds.patch fixing bsc#1227999 + adding reproducibility patches from gh#python/cpython!121872 + and gh#python/cpython!121883. +- Add skip_test_abort_clients.patch (gh#python/cpython#122136) + skip not yet fixed failing test +- %{profileopt} variable is set according to the variable + %{do_profiling} (bsc#1227999) +- Update bluez-devel-vendor.tar.xz + +------------------------------------------------------------------- +Thu Aug 1 10:35:25 UTC 2024 - Matej Cepl <mcepl@cepl.eu> + +- Update to 3.13.0~rc1: + - Tests + - gh-59022: Add tests for pkgutil.extend_path(). Patch by + Andreas Stocker. + - gh-99242: os.getloadavg() may throw OSError when + running regression tests under certain conditions (e.g. + chroot). This error is now caught and ignored, since + reporting load average is optional. + - Security + - gh-122133: Authenticate the socket connection for the + socket.socketpair() fallback on platforms where AF_UNIX is + not available like Windows. + - Patch by Gregory P. Smith <greg@krypto.org> and Seth Larson + <seth@python.org>. Reported by Ellie <el@horse64.org> + - gh-121957: Fixed missing audit events around interactive + use of Python, now also properly firing for python -i, as + well as for python -m asyncio. The events in question are + cpython.run_stdin and cpython.run_startup. + - Library + - gh-122400: Handle ValueErrors raised by os.stat() in + filecmp.dircmp and filecmp.cmpfiles(). Patch by Bénédikt + Tran. + - gh-122311: Fix some error messages in pickle. + - gh-122332: Fixed segfault with asyncio.Task.get_coro() when + using an eager task factory. + - gh-105733: ctypes.ARRAY() is now soft deprecated: it no + longer emits deprecation warnings and is not scheduled for + removal. + - gh-122087: Restore inspect.ismethoddescriptor() and + inspect.isroutine() returning False for functools.partial + objects. + - gh-122170: Handle ValueErrors raised by os.stat() in + linecache. Patch by Bénédikt Tran. + - gh-82951: Serializing objects with complex __qualname__ + (such as unbound methods and nested classes) by name no + longer involves serializing parent objects by value in + pickle protocols < 4. + - gh-113785: csv now correctly parses numeric fields (when + used with csv.QUOTE_NONNUMERIC or csv.QUOTE_STRINGS) which + start with an escape character. + - gh-122088: @warnings.deprecated now copies the + coroutine status of functions and methods so that + inspect.iscoroutinefunction() returns the correct result. + - gh-120930: Fixed a bug introduced by gh-92081 that added an + incorrect extra blank to encoded words occurring in wrapped + headers. + - gh-121474: Fix missing sanity check for parties arg in + threading.Barrier constructor. Patch by Clinton Christian + (pygeek). + - gh-120289: Fixed the use-after-free issue in cProfile by + disallowing disable() and clear() in external timers. + - IDLE + - gh-122482: Change About IDLE to direct users to + discuss.python.org instead of the now unused idle-dev email + and mailing list. + - Core and Builtins + - gh-116090: Fix an issue in JIT builds that prevented some + for loops from correctly firing RAISE monitoring events. + - gh-122208: Dictionary watchers now only deliver the + PyDict_EVENT_ADDED event when the insertion is in a known + good state to succeed. + - gh-122300: Preserve AST nodes for f-string with + single-element format specifiers. Patch by Pablo Galindo + - gh-122029: Emit c_call events in sys.setprofile() when a + PyMethodObject pointing to a PyCFunction is called. + - gh-122026: Fix a bug that caused the tokenizer to not + correctly identify mismatched parentheses inside f-strings + in some situations. Patch by Pablo Galindo + - gh-118934: Make PyEval_GetLocals return borrowed reference + - C API + - gh-116622: Make PyObject_Print work around a bug in Android + and OpenBSD which prevented it from throwing an exception + when trying to write to a read-only stream. + - gh-121489: Export private _PyBytes_Join() again. + - Build + - gh-120522: Added a --with-app-store-compliance option to + patch out known issues with macOS/iOS App Store review + processes. + +------------------------------------------------------------------- @@ -151,0 +249 @@ +- Update bluez-devel-vendor.tar.xz vendored files. Old: ---- Python-3.13.0b4.tar.xz Python-3.13.0b4.tar.xz.asc New: ---- CVE-2024-6923-email-hdr-inject.patch Python-3.13.0rc1.tar.xz Python-3.13.0rc1.tar.xz.asc bso1227999-reproducible-builds.patch skip_test_abort_clients.patch BETA DEBUG BEGIN: New: - Add CVE-2024-6923-email-hdr-inject.patch to prevent email header injection due to unquoted newlines (bsc#1228780, New: CVE-2024-6923). - Adding bso1227999-reproducible-builds.patch fixing bsc#1227999 adding reproducibility patches from gh#python/cpython!121872 New: and gh#python/cpython!121883. - Add skip_test_abort_clients.patch (gh#python/cpython#122136) skip not yet fixed failing test BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python313.spec ++++++ --- /var/tmp/diff_new_pack.RqF8KQ/_old 2024-08-08 10:59:08.669460448 +0200 +++ /var/tmp/diff_new_pack.RqF8KQ/_new 2024-08-08 10:59:08.669460448 +0200 @@ -36,6 +36,12 @@ %bcond_without general %endif +%if 0%{?do_profiling} +%bcond_without profileopt +%else +%bcond_with profileopt +%endif + # Currently supported architectures # https://peps.python.org/pep-0744/#support %ifarch %{x86_64} aarch64 @@ -110,10 +116,9 @@ # pyexpat.cpython-35m-armv7-linux-gnueabihf # _md5.cpython-38m-x86_64-linux-gnu.so %define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so -%bcond_without profileopt Name: %{python_pkg_name}%{psuffix} -Version: 3.13.0~b4 -%define tarversion 3.13.0b4 +Version: 3.13.0~rc1 +%define tarversion 3.13.0rc1 %define tarname Python-%{tarversion} Release: 0 Summary: Python 3 Interpreter @@ -172,6 +177,15 @@ # PATCH-FIX-SLE fix_configure_rst.patch bpo#43774 mcepl@suse.com # remove duplicate link targets and make documentation with old Sphinx in SLE Patch10: fix_configure_rst.patch +# PATCH-FIX-UPSTREAM skip_test_abort_clients.patch gh#python/cpython#122136 mcepl@suse.com +# Not yet fixed failing test +Patch11: skip_test_abort_clients.patch +# PATCH-FIX-UPSTREAM CVE-2024-6923-email-hdr-inject.patch bsc#1228780 mcepl@suse.com +# prevent email header injection, patch from gh#python/cpython!122608 +Patch12: CVE-2024-6923-email-hdr-inject.patch +# PATCH-FIX-UPSTREAM bso1227999-reproducible-builds.patch bsc#1227999 mcepl@suse.com +# reproducibility patches +Patch13: bso1227999-reproducible-builds.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes ++++++ CVE-2024-6923-email-hdr-inject.patch ++++++ From a590277e980eaa8a08204b79ed6c62a763701c8b Mon Sep 17 00:00:00 2001 From: Petr Viktorin <encukou@gmail.com> Date: Wed, 31 Jul 2024 00:19:48 +0200 Subject: [PATCH] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) GH-GH- Encode header parts that contain newlines Per RFC 2047:
[...] these encoding schemes allow the encoding of arbitrary octet values, mail readers that implement this decoding should also ensure that display of the decoded data on the recipient's terminal will not cause unwanted side-effects
It seems that the "quoted-word" scheme is a valid way to include a newline character in a header value, just like we already allow undecodable bytes or control characters. They do need to be properly quoted when serialized to text, though. GH-GH- Verify that email headers are well-formed This should fail for custom fold() implementations that aren't careful about newlines. (cherry picked from commit 097633981879b3c9de9a1dd120d3aa585ecc2384) Co-authored-by: Petr Viktorin <encukou@gmail.com> Co-authored-by: Bas Bloemsaat <bas@bloemsaat.org> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> --- Doc/library/email.errors.rst | 7 +++ Doc/library/email.policy.rst | 18 ++++++ Doc/whatsnew/3.13.rst | 9 +++ Lib/email/_header_value_parser.py | 12 +++- Lib/email/_policybase.py | 8 +++ Lib/email/errors.py | 4 ++ Lib/email/generator.py | 13 +++- Lib/test/test_email/test_generator.py | 62 +++++++++++++++++++ Lib/test/test_email/test_policy.py | 26 ++++++++ ...-07-27-16-10-41.gh-issue-121650.nf6oc9.rst | 5 ++ 10 files changed, 160 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2024-07-27-16-10-41.gh-issue-121650.nf6oc9.rst diff --git a/Doc/library/email.errors.rst b/Doc/library/email.errors.rst index 33ab4265116178..f8f43d82a3df2e 100644 --- a/Doc/library/email.errors.rst +++ b/Doc/library/email.errors.rst @@ -58,6 +58,13 @@ The following exception classes are defined in the :mod:`email.errors` module: :class:`~email.mime.nonmultipart.MIMENonMultipart` (e.g. :class:`~email.mime.image.MIMEImage`). + +.. exception:: HeaderWriteError() + + Raised when an error occurs when the :mod:`~email.generator` outputs + headers. + + .. exception:: MessageDefect() This is the base class for all defects found when parsing email messages. diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst index 83feedf728351e..314767d0802a08 100644 --- a/Doc/library/email.policy.rst +++ b/Doc/library/email.policy.rst @@ -229,6 +229,24 @@ added matters. To illustrate:: .. versionadded:: 3.6 + + .. attribute:: verify_generated_headers + + If ``True`` (the default), the generator will raise + :exc:`~email.errors.HeaderWriteError` instead of writing a header + that is improperly folded or delimited, such that it would + be parsed as multiple headers or joined with adjacent data. + Such headers can be generated by custom header classes or bugs + in the ``email`` module. + + As it's a security feature, this defaults to ``True`` even in the + :class:`~email.policy.Compat32` policy. + For backwards compatible, but unsafe, behavior, it must be set to + ``False`` explicitly. + + .. versionadded:: 3.13 + + The following :class:`Policy` method is intended to be called by code using the email library to create policy instances with custom settings: diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst index b53f419a59f062..35b808a4dd00a4 100644 --- a/Doc/whatsnew/3.13.rst +++ b/Doc/whatsnew/3.13.rst @@ -724,6 +724,15 @@ doctest email ----- +* Headers with embedded newlines are now quoted on output. + + The :mod:`~email.generator` will now refuse to serialize (write) headers + that are improperly folded or delimited, such that they would be parsed as + multiple headers or joined with adjacent data. + If you need to turn this safety feature off, + set :attr:`~email.policy.Policy.verify_generated_headers`. + (Contributed by Bas Bloemsaat and Petr Viktorin in :gh:`121650`.) + * :func:`email.utils.getaddresses` and :func:`email.utils.parseaddr` now return ``('', '')`` 2-tuples in more situations where invalid email addresses are encountered instead of potentially inaccurate values. Add optional *strict* diff --git a/Lib/email/_header_value_parser.py b/Lib/email/_header_value_parser.py index 7da1bbaf8a80d7..ec2215a5e5f33c 100644 --- a/Lib/email/_header_value_parser.py +++ b/Lib/email/_header_value_parser.py @@ -92,6 +92,8 @@ ASPECIALS = TSPECIALS | set("*'%") ATTRIBUTE_ENDS = ASPECIALS | WSP EXTENDED_ATTRIBUTE_ENDS = ATTRIBUTE_ENDS - set('%') +NLSET = {'\n', '\r'} +SPECIALSNL = SPECIALS | NLSET def quote_string(value): return '"'+str(value).replace('\\', '\\\\').replace('"', r'\"')+'"' @@ -2802,9 +2804,13 @@ def _refold_parse_tree(parse_tree, *, policy): wrap_as_ew_blocked -= 1 continue tstr = str(part) - if part.token_type == 'ptext' and set(tstr) & SPECIALS: - # Encode if tstr contains special characters. - want_encoding = True + if not want_encoding: + if part.token_type == 'ptext': + # Encode if tstr contains special characters. + want_encoding = not SPECIALSNL.isdisjoint(tstr) + else: + # Encode if tstr contains newlines. + want_encoding = not NLSET.isdisjoint(tstr) try: tstr.encode(encoding) charset = encoding diff --git a/Lib/email/_policybase.py b/Lib/email/_policybase.py index 2ec54fbabae83c..5f9aa9fb091fa2 100644 --- a/Lib/email/_policybase.py +++ b/Lib/email/_policybase.py @@ -157,6 +157,13 @@ class Policy(_PolicyBase, metaclass=abc.ABCMeta): message_factory -- the class to use to create new message objects. If the value is None, the default is Message. + verify_generated_headers + -- if true, the generator verifies that each header + they are properly folded, so that a parser won't + treat it as multiple headers, start-of-body, or + part of another header. + This is a check against custom Header & fold() + implementations. """ raise_on_defect = False @@ -165,6 +172,7 @@ class Policy(_PolicyBase, metaclass=abc.ABCMeta): max_line_length = 78 mangle_from_ = False message_factory = None + verify_generated_headers = True def handle_defect(self, obj, defect): """Based on policy, either raise defect or call register_defect. diff --git a/Lib/email/errors.py b/Lib/email/errors.py index 3ad00565549968..02aa5eced6ae46 100644 --- a/Lib/email/errors.py +++ b/Lib/email/errors.py @@ -29,6 +29,10 @@ class CharsetError(MessageError): """An illegal charset was given.""" +class HeaderWriteError(MessageError): + """Error while writing headers.""" + + # These are parsing defects which the parser was able to work around. class MessageDefect(ValueError): """Base class for a message defect.""" diff --git a/Lib/email/generator.py b/Lib/email/generator.py index c8056ad47baa0f..47b9df8f4e6090 100644 --- a/Lib/email/generator.py +++ b/Lib/email/generator.py @@ -14,12 +14,14 @@ from copy import deepcopy from io import StringIO, BytesIO from email.utils import _has_surrogates +from email.errors import HeaderWriteError UNDERSCORE = '_' NL = '\n' # XXX: no longer used by the code below. NLCRE = re.compile(r'\r\n|\r|\n') fcre = re.compile(r'^From ', re.MULTILINE) +NEWLINE_WITHOUT_FWSP = re.compile(r'\r\n[^ \t]|\r[^ \n\t]|\n[^ \t]') class Generator: @@ -222,7 +224,16 @@ def _dispatch(self, msg): def _write_headers(self, msg): for h, v in msg.raw_items(): - self.write(self.policy.fold(h, v)) + folded = self.policy.fold(h, v) + if self.policy.verify_generated_headers: + linesep = self.policy.linesep + if not folded.endswith(self.policy.linesep): + raise HeaderWriteError( + f'folded header does not end with {linesep!r}: {folded!r}') + if NEWLINE_WITHOUT_FWSP.search(folded.removesuffix(linesep)): + raise HeaderWriteError( + f'folded header contains newline: {folded!r}') + self.write(folded) # A blank line always separates headers from body self.write(self._NL) diff --git a/Lib/test/test_email/test_generator.py b/Lib/test/test_email/test_generator.py index bc6f734d4fd0a9..c75a842c33578e 100644 --- a/Lib/test/test_email/test_generator.py +++ b/Lib/test/test_email/test_generator.py @@ -6,6 +6,7 @@ from email.generator import Generator, BytesGenerator from email.headerregistry import Address from email import policy +import email.errors from test.test_email import TestEmailBase, parameterize @@ -249,6 +250,44 @@ def test_rfc2231_wrapping_switches_to_default_len_if_too_narrow(self): g.flatten(msg) self.assertEqual(s.getvalue(), self.typ(expected)) + def test_keep_encoded_newlines(self): + msg = self.msgmaker(self.typ(textwrap.dedent("""\ + To: nobody + Subject: Bad subject=?UTF-8?Q?=0A?=Bcc: injection@example.com + + None + """))) + expected = textwrap.dedent("""\ + To: nobody + Subject: Bad subject=?UTF-8?Q?=0A?=Bcc: injection@example.com + + None + """) + s = self.ioclass() + g = self.genclass(s, policy=self.policy.clone(max_line_length=80)) + g.flatten(msg) + self.assertEqual(s.getvalue(), self.typ(expected)) + + def test_keep_long_encoded_newlines(self): + msg = self.msgmaker(self.typ(textwrap.dedent("""\ + To: nobody + Subject: Bad subject=?UTF-8?Q?=0A?=Bcc: injection@example.com + + None + """))) + expected = textwrap.dedent("""\ + To: nobody + Subject: Bad subject + =?utf-8?q?=0A?=Bcc: + injection@example.com + + None + """) + s = self.ioclass() + g = self.genclass(s, policy=self.policy.clone(max_line_length=30)) + g.flatten(msg) + self.assertEqual(s.getvalue(), self.typ(expected)) + class TestGenerator(TestGeneratorBase, TestEmailBase): @@ -273,6 +312,29 @@ def test_flatten_unicode_linesep(self): g.flatten(msg) self.assertEqual(s.getvalue(), self.typ(expected)) + def test_verify_generated_headers(self): + """gh-121650: by default the generator prevents header injection""" + class LiteralHeader(str): + name = 'Header' + def fold(self, **kwargs): + return self + + for text in ( + 'Value\r\nBad Injection\r\n', + 'NoNewLine' + ): + with self.subTest(text=text): + message = message_from_string( + "Header: Value\r\n\r\nBody", + policy=self.policy, + ) + + del message['Header'] + message['Header'] = LiteralHeader(text) + + with self.assertRaises(email.errors.HeaderWriteError): + message.as_string() + class TestBytesGenerator(TestGeneratorBase, TestEmailBase): diff --git a/Lib/test/test_email/test_policy.py b/Lib/test/test_email/test_policy.py index c6b9c80efe1b54..baa35fd68e49c5 100644 --- a/Lib/test/test_email/test_policy.py +++ b/Lib/test/test_email/test_policy.py @@ -26,6 +26,7 @@ class PolicyAPITests(unittest.TestCase): 'raise_on_defect': False, 'mangle_from_': True, 'message_factory': None, + 'verify_generated_headers': True, } # These default values are the ones set on email.policy.default. # If any of these defaults change, the docs must be updated. @@ -294,6 +295,31 @@ def test_short_maxlen_error(self): with self.assertRaises(email.errors.HeaderParseError): policy.fold("Subject", subject) + def test_verify_generated_headers(self): + """Turning protection off allows header injection""" + policy = email.policy.default.clone(verify_generated_headers=False) + for text in ( + 'Header: Value\r\nBad: Injection\r\n', + 'Header: NoNewLine' + ): + with self.subTest(text=text): + message = email.message_from_string( + "Header: Value\r\n\r\nBody", + policy=policy, + ) + class LiteralHeader(str): + name = 'Header' + def fold(self, **kwargs): + return self + + del message['Header'] + message['Header'] = LiteralHeader(text) + + self.assertEqual( + message.as_string(), + f"{text}\nBody", + ) + # XXX: Need subclassing tests. # For adding subclassed objects, make sure the usual rules apply (subclass # wins), but that the order still works (right overrides left). diff --git a/Misc/NEWS.d/next/Library/2024-07-27-16-10-41.gh-issue-121650.nf6oc9.rst b/Misc/NEWS.d/next/Library/2024-07-27-16-10-41.gh-issue-121650.nf6oc9.rst new file mode 100644 index 00000000000000..83dd28d4ac575b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-07-27-16-10-41.gh-issue-121650.nf6oc9.rst @@ -0,0 +1,5 @@ +:mod:`email` headers with embedded newlines are now quoted on output. The +:mod:`~email.generator` will now refuse to serialize (write) headers that +are unsafely folded or delimited; see +:attr:`~email.policy.Policy.verify_generated_headers`. (Contributed by Bas +Bloemsaat and Petr Viktorin in :gh:`121650`.) ++++++ bluez-devel-vendor.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vendor/bluetooth/bluetooth.h new/Vendor/bluetooth/bluetooth.h --- old/Vendor/bluetooth/bluetooth.h 2023-10-02 19:07:44.953002185 +0200 +++ new/Vendor/bluetooth/bluetooth.h 2024-08-07 15:40:00.319405460 +0200 @@ -174,7 +174,7 @@ struct bt_iso_bcast_qos { uint8_t big; uint8_t bis; - uint8_t sync_interval; + uint8_t sync_factor; uint8_t packing; uint8_t framing; struct bt_iso_io_qos in; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Vendor/bluetooth/sdp_lib.h new/Vendor/bluetooth/sdp_lib.h --- old/Vendor/bluetooth/sdp_lib.h 2023-10-02 19:07:44.956335545 +0200 +++ new/Vendor/bluetooth/sdp_lib.h 2024-08-07 15:40:00.322738820 +0200 @@ -141,7 +141,8 @@ /* flexible extraction of basic attributes - Jean II */ int sdp_get_int_attr(const sdp_record_t *rec, uint16_t attr, int *value); -int sdp_get_string_attr(const sdp_record_t *rec, uint16_t attr, char *value, int valuelen); +int sdp_get_string_attr(const sdp_record_t *rec, uint16_t attr, char *value, + size_t valuelen); /* * Basic sdp data functions @@ -543,32 +544,38 @@ int sdp_get_service_ttl(const sdp_record_t *rec, uint32_t *svcTTLInfo); int sdp_get_database_state(const sdp_record_t *rec, uint32_t *svcDBState); -static inline int sdp_get_service_name(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_service_name(const sdp_record_t *rec, char *str, + size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_SVCNAME_PRIMARY, str, len); } -static inline int sdp_get_service_desc(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_service_desc(const sdp_record_t *rec, char *str, + size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_SVCDESC_PRIMARY, str, len); } -static inline int sdp_get_provider_name(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_provider_name(const sdp_record_t *rec, char *str, + size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_PROVNAME_PRIMARY, str, len); } -static inline int sdp_get_doc_url(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_doc_url(const sdp_record_t *rec, char *str, + size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_DOC_URL, str, len); } -static inline int sdp_get_clnt_exec_url(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_clnt_exec_url(const sdp_record_t *rec, char *str, + size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_CLNT_EXEC_URL, str, len); } -static inline int sdp_get_icon_url(const sdp_record_t *rec, char *str, int len) +static inline int sdp_get_icon_url(const sdp_record_t *rec, char *str, + size_t len) { return sdp_get_string_attr(rec, SDP_ATTR_ICON_URL, str, len); } ++++++ bpo-31046_ensurepip_honours_prefix.patch ++++++ --- /var/tmp/diff_new_pack.RqF8KQ/_old 2024-08-08 10:59:08.841467519 +0200 +++ /var/tmp/diff_new_pack.RqF8KQ/_new 2024-08-08 10:59:08.849467848 +0200 @@ -139,7 +139,7 @@ --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -2144,7 +2144,7 @@ install: @FRAMEWORKINSTALLFIRST@ @INSTAL +@@ -2157,7 +2157,7 @@ install: @FRAMEWORKINSTALLFIRST@ @INSTAL install|*) ensurepip="" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -148,7 +148,7 @@ fi .PHONY: altinstall -@@ -2155,7 +2155,7 @@ altinstall: commoninstall +@@ -2168,7 +2168,7 @@ altinstall: commoninstall install|*) ensurepip="--altinstall" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ ++++++ bso1227999-reproducible-builds.patch ++++++ From ac2b8869724d7a57d9b5efbdce2f20423214e8bb Mon Sep 17 00:00:00 2001 From: "Bernhard M. Wiedemann" <bwiedemann@suse.de> Date: Tue, 16 Jul 2024 21:39:33 +0200 Subject: [PATCH] Allow to override build date with SOURCE_DATE_EPOCH to make builds reproducible. See https://reproducible-builds.org/ for why this is good and https://reproducible-builds.org/specs/source-date-epoch/ for the definition of this variable. --- Doc/library/functions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1502,7 +1502,7 @@ are always available. They are listed h (where :func:`open` is declared), :mod:`os`, :mod:`os.path`, :mod:`tempfile`, and :mod:`shutil`. - .. audit-event:: open file,mode,flags open + .. audit-event:: open path,mode,flags open The ``mode`` and ``flags`` arguments may have been modified or inferred from the original call. ++++++ fix_configure_rst.patch ++++++ --- /var/tmp/diff_new_pack.RqF8KQ/_old 2024-08-08 10:59:08.889469492 +0200 +++ /var/tmp/diff_new_pack.RqF8KQ/_new 2024-08-08 10:59:08.893469657 +0200 @@ -4,7 +4,7 @@ --- a/Misc/NEWS +++ b/Misc/NEWS -@@ -17527,7 +17527,7 @@ C API +@@ -17647,7 +17647,7 @@ C API - bpo-40939: Removed documentation for the removed ``PyParser_*`` C API. - bpo-43795: The list in :ref:`limited-api-list` now shows the public name ++++++ python-3.3.0b1-fix_date_time_compiler.patch ++++++ --- /var/tmp/diff_new_pack.RqF8KQ/_old 2024-08-08 10:59:08.969472781 +0200 +++ /var/tmp/diff_new_pack.RqF8KQ/_new 2024-08-08 10:59:08.969472781 +0200 @@ -4,7 +4,7 @@ --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1666,11 +1666,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ +@@ -1679,11 +1679,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ $(DTRACE_OBJS) \ $(srcdir)/Modules/getbuildinfo.c $(CC) -c $(PY_CORE_CFLAGS) \ ++++++ skip_test_abort_clients.patch ++++++ --- Lib/test/test_asyncio/test_server.py | 1 + 1 file changed, 1 insertion(+) Index: Python-3.13.0rc1/Lib/test/test_asyncio/test_server.py =================================================================== --- Python-3.13.0rc1.orig/Lib/test/test_asyncio/test_server.py +++ Python-3.13.0rc1/Lib/test/test_asyncio/test_server.py @@ -212,6 +212,7 @@ class TestServer2(unittest.IsolatedAsync await asyncio.sleep(0) self.assertTrue(task.done()) + @unittest.skip('Failing test gh#python/cpython#122136') async def test_abort_clients(self): async def serve(rd, wr): fut.set_result((rd, wr))
participants (1)
-
Source-Sync