From 489c41d37db555a605724563e630958b3035dd86 Mon Sep 17 00:00:00 2001 From: Romain Courteaud Date: Mon, 11 Mar 2019 19:14:36 +0900 Subject: [PATCH] [node] atob raises an Error if parameter is not a valid base64 Try to reproduce the browser specifications. --- src/node/jio-compat.js | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/node/jio-compat.js b/src/node/jio-compat.js index 495c8ba..4b259a8 100644 --- a/src/node/jio-compat.js +++ b/src/node/jio-compat.js @@ -190,11 +190,10 @@ try { return window.atob(str); } catch (err) { - var buffer; - if (str instanceof Buffer) { - buffer = str; - } else { - buffer = Buffer.from(str.toString(), 'base64'); + var buffer = Buffer.from(str.toString(), 'base64'); + // Provide the same behaviour than the browser atob + if (buffer.toString('base64') !== str) { + throw new Error('The string to be decoded is not correctly encoded.'); } return buffer.toString('binary'); } @@ -206,13 +205,7 @@ try { return window.btoa(str); } catch (err) { - var buffer; - if (str instanceof Buffer) { - buffer = str; - } else { - buffer = Buffer.from(str.toString(), 'binary'); - } - return buffer.toString('base64'); + return Buffer.from(str.toString(), 'binary').toString('base64'); } } -- libgit2 0.24.0