From cb8b2bad346996716462d1fc73c298a68dceedf9 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Fri, 7 Nov 2025 12:14:51 +0100 Subject: [PATCH] [3.14] gh-141141: Make base64.b85decode() thread safe (GH-141149) (GH-141184) (cherry picked from commit a7bf27f7f521384a8964718bdb58a5cb113bb3ec) Co-authored-by: Benel Tayar <86257734+beneltayar@users.noreply.github.com> --- Lib/base64.py | 7 +++++-- .../Library/2025-11-06-15-11-50.gh-issue-141141.tgIfgH.rst | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2025-11-06-15-11-50.gh-issue-141141.tgIfgH.rst diff --git a/Lib/base64.py b/Lib/base64.py index 5d78cc09f40c..cfc57626c40b 100644 --- a/Lib/base64.py +++ b/Lib/base64.py @@ -462,9 +462,12 @@ def b85decode(b): # Delay the initialization of tables to not waste memory # if the function is never called if _b85dec is None: - _b85dec = [None] * 256 + # we don't assign to _b85dec directly to avoid issues when + # multiple threads call this function simultaneously + b85dec_tmp = [None] * 256 for i, c in enumerate(_b85alphabet): - _b85dec[c] = i + b85dec_tmp[c] = i + _b85dec = b85dec_tmp b = _bytes_from_decode_data(b) padding = (-len(b)) % 5 diff --git a/Misc/NEWS.d/next/Library/2025-11-06-15-11-50.gh-issue-141141.tgIfgH.rst b/Misc/NEWS.d/next/Library/2025-11-06-15-11-50.gh-issue-141141.tgIfgH.rst new file mode 100644 index 000000000000..f59ccfb33e76 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-11-06-15-11-50.gh-issue-141141.tgIfgH.rst @@ -0,0 +1 @@ +Fix a thread safety issue with :func:`base64.b85decode`. Contributed by Benel Tayar. -- 2.47.3