From 8d56e4fbf1a0e213574a575735c7bc18696b25dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 9 Sep 2025 22:38:27 +0200 Subject: [PATCH] Return proper bad request error for request with incorrect data --- trytond/trytond/protocols/jsonrpc.py | 14 ++++++++++---- trytond/trytond/protocols/xmlrpc.py | 10 ++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/trytond/trytond/protocols/jsonrpc.py b/trytond/trytond/protocols/jsonrpc.py index 50b35a7f34..5e68ede280 100644 --- a/trytond/trytond/protocols/jsonrpc.py +++ b/trytond/trytond/protocols/jsonrpc.py @@ -132,18 +132,24 @@ class JSONRequest(Request): object_hook=JSONDecoder()) except HTTPException: raise - except Exception: - raise BadRequest('Unable to read JSON request') + except Exception as e: + raise BadRequest('Unable to read JSON request') from e else: raise BadRequest('Not a JSON request') @cached_property def rpc_method(self): - return self.parsed_data['method'] + try: + return self.parsed_data['method'] or '' + except Exception as e: + raise BadRequest("Unable to get RPC method") from e @cached_property def rpc_params(self): - return self.parsed_data['params'] + try: + return self.parsed_data['params'] or [] + except Exception as e: + raise BadRequest("Unable to get RPC params") from e class JSONProtocol: diff --git a/trytond/trytond/protocols/xmlrpc.py b/trytond/trytond/protocols/xmlrpc.py index 9e571a103d..bceded3c16 100644 --- a/trytond/trytond/protocols/xmlrpc.py +++ b/trytond/trytond/protocols/xmlrpc.py @@ -146,11 +146,17 @@ class XMLRequest(Request): @property def rpc_method(self): - return self.parsed_data[1] + try: + return self.parsed_data[1] or '' + except Exception as e: + raise BadRequest("Unable to get RPC method") from e @property def rpc_params(self): - return self.parsed_data[0] + try: + return self.parsed_data[0] or [] + except Exception as e: + raise BadRequest("Unable to get RPC params") from e class XMLProtocol: