From 95bfca3dd425c2b9184401805eed2546d8eacf09 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 31 Jan 2022 12:20:40 +0100 Subject: [PATCH] gdc: raise APIError on unloadable content (#61254) --- passerelle/apps/gdc/models.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/passerelle/apps/gdc/models.py b/passerelle/apps/gdc/models.py index 167c4a1a..06d9c443 100644 --- a/passerelle/apps/gdc/models.py +++ b/passerelle/apps/gdc/models.py @@ -27,6 +27,7 @@ from django.utils.translation import ugettext_lazy as _ from passerelle.base.models import BaseResource from passerelle.utils.api import endpoint +from passerelle.utils.jsonresponse import APIError def deep_bytes2str(obj): @@ -48,7 +49,11 @@ def deep_bytes2str(obj): def phpserialize_loads(s): - return deep_bytes2str(phpserialize.loads(s.encode('utf-8'))) + try: + return deep_bytes2str(phpserialize.loads(s.encode('utf-8'))) + except ValueError: + truncated = s[:128] if isinstance(s, str) else s + raise APIError(f'Could not deserialize GDC response {truncated:r}', data={'content': s}) class Gdc(BaseResource): -- 2.34.1