From 292382812dab7296aa1686bd515e745dbef5ca5a Mon Sep 17 00:00:00 2001 From: Ciarands <74070993+Ciarands@users.noreply.github.com> Date: Fri, 9 Aug 2024 03:10:33 +0100 Subject: [PATCH 1/2] fix: base64.py 'Incorrect padding' error Update python implementation of 'atob' to properly reflect behaviour of JS 'atob'. --- python/pythonmonkey/builtin_modules/base64.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python/pythonmonkey/builtin_modules/base64.py b/python/pythonmonkey/builtin_modules/base64.py index 12ca25a0..da18fedc 100644 --- a/python/pythonmonkey/builtin_modules/base64.py +++ b/python/pythonmonkey/builtin_modules/base64.py @@ -8,7 +8,10 @@ def atob(b64): - return str(base64.standard_b64decode(b64), 'latin1') + # Workaround for pythons 'Incorrect padding' error when base64 decoding, see: + # https://stackoverflow.com/questions/2941995/python-ignore-incorrect-padding-error-when-base64-decoding + append = b"==" if isinstance(b64, bytes) else "==" + return str(base64.standard_b64decode(b64 + append), 'latin1') def btoa(data): From 2751372dacce495da39f22f6f73ee399b5f0f8db Mon Sep 17 00:00:00 2001 From: Ciarands <74070993+Ciarands@users.noreply.github.com> Date: Wed, 21 Aug 2024 23:11:03 +0100 Subject: [PATCH 2/2] Requested changes --- python/pythonmonkey/builtin_modules/base64.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/python/pythonmonkey/builtin_modules/base64.py b/python/pythonmonkey/builtin_modules/base64.py index da18fedc..97e29ade 100644 --- a/python/pythonmonkey/builtin_modules/base64.py +++ b/python/pythonmonkey/builtin_modules/base64.py @@ -8,10 +8,8 @@ def atob(b64): - # Workaround for pythons 'Incorrect padding' error when base64 decoding, see: - # https://stackoverflow.com/questions/2941995/python-ignore-incorrect-padding-error-when-base64-decoding - append = b"==" if isinstance(b64, bytes) else "==" - return str(base64.standard_b64decode(b64 + append), 'latin1') + padding = '=' * (4 - (len(b64) & 3)) + return str(base64.standard_b64decode(b64 + padding), 'latin1') def btoa(data):