15
0

7 Commits

Author SHA256 Message Date
ffa5735d11 Add CVE-2026-24486.patch to fix CVE-2026-24486 (bsc#1257301) 2026-01-27 10:21:46 +01:00
4e88c74315 Accepting request 1243192 from devel:languages:python
- update to 0.0.20:
  * Handle messages containing only end boundary #142.

OBS-URL: https://build.opensuse.org/request/show/1243192
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-python-multipart?expand=0&rev=11
2025-02-05 11:40:02 +00:00
a21393f2bf - update to 0.0.20:
* Handle messages containing only end boundary #142.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-python-multipart?expand=0&rev=20
2025-02-04 17:06:30 +00:00
565091e41f Accepting request 1228255 from devel:languages:python
- Update to 0.0.19 (bsc#1234115, CVE-2024-53981):
  * Don't warn when CRLF is found after last boundary #193
- 0.0.18:
  * Hard break if found data after last boundary on MultipartParser #189

OBS-URL: https://build.opensuse.org/request/show/1228255
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-python-multipart?expand=0&rev=10
2024-12-05 16:05:16 +00:00
0c164763f5 - Update to 0.0.19 (bsc#1234115, CVE-2024-53981):
* Don't warn when CRLF is found after last boundary #193
- 0.0.18:
  * Hard break if found data after last boundary on MultipartParser #189

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-python-multipart?expand=0&rev=18
2024-12-04 10:15:01 +00:00
a42c6bf9d3 Accepting request 1221776 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1221776
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-python-multipart?expand=0&rev=9
2024-11-08 10:56:04 +00:00
324ee0d27c - Update to 0.0.17
* Handle PermissionError in fallback code for old import name #182
- from version 0.0.16
  * Add dunder attributes to `multipart` package #177
- from version 0.0.15
  * Replace `FutureWarning` to `PendingDeprecationWarning` #174
  * Add missing files to SDist #171
- from version 0.0.14
  * Fix import scheme for `multipart` module #168
- from version 0.0.13
  * Rename import to `python_multipart` #166
- from version 0.0.12
  * Improve error message when boundary character does not match #124
  * Add mypy strict typing #140
  * Enforce 100% coverage #159
- from version 0.0.11
  * Improve performance, especially in data with many CR-LF #137
  * Handle invalid CRLF in header name #141
- from version 0.0.10
  * Support `on_header_begin` #103
  * Improve type hints on `FormParser` #104
  * Fix `OnFileCallback` type #106
  * Improve type hints #110
  * Improve type hints on `File` #111
  * Add type hint to helper functions #112
  * Minor fix for Field.__repr__ #114
  * Fix use of chunk_size parameter #136
  * Allow digits and valid token chars in headers #134
  * Fix headers being carried between parts #135
- Add python_multipart Python directory to %files section

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-python-multipart?expand=0&rev=16
2024-11-06 14:42:11 +00:00
3 changed files with 65 additions and 0 deletions

58
CVE-2026-24486.patch Normal file
View File

@@ -0,0 +1,58 @@
From 9433f4bbc9652bdde82bbe380984e32f8cfc89c4 Mon Sep 17 00:00:00 2001
From: Marcelo Trylesinski <marcelotryle@gmail.com>
Date: Sun, 25 Jan 2026 10:37:09 +0100
Subject: [PATCH] Merge commit from fork
---
python_multipart/multipart.py | 4 +++-
tests/test_file.py | 26 ++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 tests/test_file.py
diff --git a/python_multipart/multipart.py b/python_multipart/multipart.py
index 0cc4c82..1489b7a 100644
--- a/python_multipart/multipart.py
+++ b/python_multipart/multipart.py
@@ -375,7 +375,9 @@ def __init__(self, file_name: bytes | None, field_name: bytes | None = None, con
# Split the extension from the filename.
if file_name is not None:
- base, ext = os.path.splitext(file_name)
+ # Extract just the basename to avoid directory traversal
+ basename = os.path.basename(file_name)
+ base, ext = os.path.splitext(basename)
self._file_base = base
self._ext = ext
diff --git a/tests/test_file.py b/tests/test_file.py
new file mode 100644
index 0000000..4d65232
--- /dev/null
+++ b/tests/test_file.py
@@ -0,0 +1,26 @@
+from pathlib import Path
+
+from python_multipart.multipart import File
+
+
+def test_upload_dir_with_leading_slash_in_filename(tmp_path: Path):
+ upload_dir = tmp_path / "upload"
+ upload_dir.mkdir()
+
+ # When the file_name provided has a leading slash, we should only use the basename.
+ # This is to avoid directory traversal.
+ to_upload = tmp_path / "foo.txt"
+
+ file = File(
+ bytes(to_upload),
+ config={
+ "UPLOAD_DIR": bytes(upload_dir),
+ "UPLOAD_KEEP_FILENAME": True,
+ "UPLOAD_KEEP_EXTENSIONS": True,
+ "MAX_MEMORY_FILE_SIZE": 10,
+ },
+ )
+ file.write(b"123456789012")
+ assert not file.in_memory
+ assert Path(upload_dir / "foo.txt").exists()
+ assert Path(upload_dir / "foo.txt").read_bytes() == b"123456789012"

View File

@@ -1,3 +1,8 @@
-------------------------------------------------------------------
Tue Jan 27 09:01:01 UTC 2026 - Nico Krapp <nico.krapp@suse.com>
- Add CVE-2026-24486.patch to fix CVE-2026-24486 (bsc#1257301)
-------------------------------------------------------------------
Tue Feb 4 17:06:23 UTC 2025 - Dirk Müller <dmueller@suse.com>

View File

@@ -24,6 +24,8 @@ License: Apache-2.0
Summary: Python streaming multipart parser
URL: http://github.com/Kludex/python-multipart
Source: https://files.pythonhosted.org/packages/source/p/python-multipart/python_multipart-%{version}.tar.gz
# PATCH-FIX-UPSTREAM CVE-2026-24486.patch bsc#1257301 gh#Kludex/python-multipart@9433f4b
Patch0: CVE-2026-24486.patch
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module wheel}