Skip to content

Commit aba89aa

Browse files
fix for decoding base64 without padding
1 parent ab3eed0 commit aba89aa

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/modules/encoding/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ pub(crate) fn create_base64_proxy(_realm: &QuickJsRealmAdapter) -> JsProxy {
104104
let s = args[0].to_string()?;
105105
realm.create_resolving_promise(
106106
move || {
107-
let engine = base64::engine::general_purpose::STANDARD;
107+
let engine = base64::engine::general_purpose::STANDARD_NO_PAD;
108108
let decoded = engine
109-
.decode(s)
109+
.decode(s.trim_end_matches('='))
110110
.map_err(|e| JsError::new_string(format!("{e}")))?;
111111
Ok(decoded)
112112
},
@@ -126,9 +126,9 @@ pub(crate) fn create_base64_proxy(_realm: &QuickJsRealmAdapter) -> JsProxy {
126126
let s = args[0].to_string()?;
127127
realm.create_resolving_promise(
128128
move || {
129-
let engine = base64::engine::general_purpose::STANDARD;
129+
let engine = base64::engine::general_purpose::STANDARD_NO_PAD;
130130
let decoded = engine
131-
.decode(s)
131+
.decode(s.trim_end_matches('='))
132132
.map_err(|e| JsError::new_string(format!("{e}")))?;
133133
let s = String::from_utf8_lossy(&decoded);
134134
Ok(s.to_string())
@@ -147,9 +147,9 @@ pub(crate) fn create_base64_proxy(_realm: &QuickJsRealmAdapter) -> JsProxy {
147147
let s = args[0].to_string()?;
148148
realm.create_resolving_promise(
149149
move || {
150-
let engine = base64::engine::general_purpose::STANDARD;
150+
let engine = base64::engine::general_purpose::STANDARD_NO_PAD;
151151
let decoded = engine
152-
.decode(s)
152+
.decode(s.trim_end_matches('='))
153153
.map_err(|e| JsError::new_string(format!("{e}")))?;
154154
let s = String::from_utf8_lossy(&decoded);
155155
Ok(s.to_string())
@@ -168,9 +168,9 @@ pub(crate) fn create_base64_proxy(_realm: &QuickJsRealmAdapter) -> JsProxy {
168168
Err(JsError::new_str("decode expects a single string arg"))
169169
} else {
170170
let s = args[0].to_str()?;
171-
let engine = base64::engine::general_purpose::STANDARD;
171+
let engine = base64::engine::general_purpose::STANDARD_NO_PAD;
172172
let decoded = engine
173-
.decode(s)
173+
.decode(s.trim_end_matches('='))
174174
.map_err(|e| JsError::new_string(format!("{e}")))?;
175175
//
176176
realm.create_typed_array_uint8(decoded)

0 commit comments

Comments
 (0)