From a361b5c330fa049354e413e9ede250f5f1e5013e Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Wed, 7 Feb 2018 22:28:33 -0400 Subject: [PATCH] Fix invalid base64 produced by love.data.encode when the input data has byte values greater than 252. Resolves issue #1374. --- src/common/b64.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/b64.cpp b/src/common/b64.cpp index fb5dc1e78..857878abd 100644 --- a/src/common/b64.cpp +++ b/src/common/b64.cpp @@ -38,7 +38,7 @@ static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$ **/ static void b64_encode_block(char in[3], char out[4], int len) { - out[0] = (char) cb64[(int)(in[0] >> 2)]; + out[0] = (char) cb64[(int)((in[0] & 0xfc) >> 2)]; out[1] = (char) cb64[(int)(((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4))]; out[2] = (char) (len > 1 ? cb64[(int)(((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6))] : '='); out[3] = (char) (len > 2 ? cb64[(int)(in[2] & 0x3f)] : '=');