@@ -1757,6 +1757,16 @@ os
1757
1757
(Contributed by Cody Maloney in :gh: `129205 `.)
1758
1758
1759
1759
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
+
1760
1770
pathlib
1761
1771
-------
1762
1772
@@ -1945,6 +1955,28 @@ sysconfig
1945
1955
(Contributed by Xuehai Pan in :gh: `131799 `.)
1946
1956
1947
1957
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
+
1948
1980
threading
1949
1981
---------
1950
1982
@@ -2700,6 +2732,7 @@ New features
2700
2732
* :c:func: `PyUnicodeWriter_Discard `
2701
2733
* :c:func: `PyUnicodeWriter_Finish `
2702
2734
* :c:func: `PyUnicodeWriter_Format `
2735
+ * :c:func: `PyUnicodeWriter_WriteASCII `
2703
2736
* :c:func: `PyUnicodeWriter_WriteChar `
2704
2737
* :c:func: `PyUnicodeWriter_WriteRepr `
2705
2738
* :c:func: `PyUnicodeWriter_WriteStr `
@@ -2976,7 +3009,7 @@ Deprecated
2976
3009
:c:func: `PyUnicodeWriter_WriteSubstring(writer, str, start, end) <PyUnicodeWriter_WriteSubstring> `.
2977
3010
* :c:func: `!_PyUnicodeWriter_WriteASCIIString `:
2978
3011
replace ``_PyUnicodeWriter_WriteASCIIString(&writer, str) `` with
2979
- :c:func: `PyUnicodeWriter_WriteUTF8 (writer, str) <PyUnicodeWriter_WriteUTF8 > `.
3012
+ :c:func: `PyUnicodeWriter_WriteASCII (writer, str) <PyUnicodeWriter_WriteASCII > `.
2980
3013
* :c:func: `!_PyUnicodeWriter_WriteLatin1String `:
2981
3014
replace ``_PyUnicodeWriter_WriteLatin1String(&writer, str) `` with
2982
3015
:c:func: `PyUnicodeWriter_WriteUTF8(writer, str) <PyUnicodeWriter_WriteUTF8> `.
0 commit comments