Skip to content

Commit 1595981

Browse files
djaypre-commit-ci-lite[bot]dataflake
authored
Handle bad xmlrpc data with BadRequest (#1244)
* Handle bad xmlrpc data with BadRequest helps ignore spam/pentest requests * Apply pre-commit code formatting * - add change log entry --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Jens Vagelpohl <jens@plyp.com>
1 parent 8c140a3 commit 1595981

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

CHANGES.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ https://github.com/zopefoundation/Zope/blob/4.x/CHANGES.rst
1010
5.11.2 (unreleased)
1111
-------------------
1212

13+
- Fix error messages from spam/pen test requests.
14+
1315
- Fix a ``ResourceWarning`` emitted when uploading large files.
1416
(`#1242 <https://github.com/zopefoundation/Zope/issues/1242>`_)
1517

@@ -24,6 +26,7 @@ https://github.com/zopefoundation/Zope/blob/4.x/CHANGES.rst
2426

2527
- Update to ``zope.interface = 7.2``.
2628

29+
2730
5.11.1 (2024-11-03)
2831
-------------------
2932

src/ZPublisher/HTTPRequest.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from urllib.parse import parse_qsl
2525
from urllib.parse import unquote
2626
from urllib.parse import urlparse
27+
from xmlrpc.client import ResponseError
2728

2829
from AccessControl.tainted import should_be_tainted as base_should_be_tainted
2930
from AccessControl.tainted import taint_string
@@ -872,7 +873,10 @@ def processInputs(
872873
if meth is not None:
873874
raise BadRequest('method directive not supported for '
874875
'xmlrpc request')
875-
meth, self.args = xmlrpc.parse_input(fs.value)
876+
try:
877+
meth, self.args = xmlrpc.parse_input(fs.value)
878+
except ResponseError as e:
879+
raise BadRequest(e)
876880
response = xmlrpc.response(response)
877881
other['RESPONSE'] = self.response = response
878882
self.maybe_webdav_client = 0

0 commit comments

Comments
 (0)