@@ -1757,6 +1757,16 @@ os
17571757 (Contributed by Cody Maloney in :gh: `129205 `.)
17581758
17591759
1760+ os.path
1761+ -------
1762+
1763+ * The *strict * parameter to :func: `os.path.realpath ` accepts a new value,
1764+ :data: `os.path.ALLOW_MISSING `.
1765+ If used, errors other than :exc: `FileNotFoundError ` will be re-raised;
1766+ the resulting path can be missing but it will be free of symlinks.
1767+ (Contributed by Petr Viktorin for :cve: `2025-4517 `.)
1768+
1769+
17601770pathlib
17611771-------
17621772
@@ -1945,6 +1955,28 @@ sysconfig
19451955 (Contributed by Xuehai Pan in :gh: `131799 `.)
19461956
19471957
1958+ tarfile
1959+ -------
1960+
1961+ * :func: `~tarfile.data_filter ` now normalizes symbolic link targets in order to
1962+ avoid path traversal attacks.
1963+ (Contributed by Petr Viktorin in :gh: `127987 ` and :cve: `2025-4138 `.)
1964+ * :func: `~tarfile.TarFile.extractall ` now skips fixing up directory attributes
1965+ when a directory was removed or replaced by another kind of file.
1966+ (Contributed by Petr Viktorin in :gh: `127987 ` and :cve: `2024-12718 `.)
1967+ * :func: `~tarfile.TarFile.extract ` and :func: `~tarfile.TarFile.extractall `
1968+ now (re-)apply the extraction filter when substituting a link (hard or
1969+ symbolic) with a copy of another archive member, and when fixing up
1970+ directory attributes.
1971+ The former raises a new exception, :exc: `~tarfile.LinkFallbackError `.
1972+ (Contributed by Petr Viktorin for :cve: `2025-4330 ` and :cve: `2024-12718 `.)
1973+ * :func: `~tarfile.TarFile.extract ` and :func: `~tarfile.TarFile.extractall `
1974+ no longer extract rejected members when
1975+ :func: `~tarfile.TarFile.errorlevel ` is zero.
1976+ (Contributed by Matt Prodani and Petr Viktorin in :gh: `112887 `
1977+ and :cve: `2025-4435 `.)
1978+
1979+
19481980threading
19491981---------
19501982
@@ -2700,6 +2732,7 @@ New features
27002732 * :c:func: `PyUnicodeWriter_Discard `
27012733 * :c:func: `PyUnicodeWriter_Finish `
27022734 * :c:func: `PyUnicodeWriter_Format `
2735+ * :c:func: `PyUnicodeWriter_WriteASCII `
27032736 * :c:func: `PyUnicodeWriter_WriteChar `
27042737 * :c:func: `PyUnicodeWriter_WriteRepr `
27052738 * :c:func: `PyUnicodeWriter_WriteStr `
@@ -2976,7 +3009,7 @@ Deprecated
29763009 :c:func: `PyUnicodeWriter_WriteSubstring(writer, str, start, end) <PyUnicodeWriter_WriteSubstring> `.
29773010 * :c:func: `!_PyUnicodeWriter_WriteASCIIString `:
29783011 replace ``_PyUnicodeWriter_WriteASCIIString(&writer, str) `` with
2979- :c:func: `PyUnicodeWriter_WriteUTF8 (writer, str) <PyUnicodeWriter_WriteUTF8 > `.
3012+ :c:func: `PyUnicodeWriter_WriteASCII (writer, str) <PyUnicodeWriter_WriteASCII > `.
29803013 * :c:func: `!_PyUnicodeWriter_WriteLatin1String `:
29813014 replace ``_PyUnicodeWriter_WriteLatin1String(&writer, str) `` with
29823015 :c:func: `PyUnicodeWriter_WriteUTF8(writer, str) <PyUnicodeWriter_WriteUTF8> `.
0 commit comments