summaryrefslogtreecommitdiff
path: root/src/base64.h
diff options
context:
space:
mode:
authorNikolai Vavilov <vvnicholas@gmail.com>2017-03-22 23:31:12 +0200
committerNikolai Vavilov <vvnicholas@gmail.com>2017-03-31 23:00:02 +0300
commit7e0c3ab641c75cf5078f03695e54f7c238aa057f (patch)
tree5438185cdd2247fc585461c37ffeadb869afd191 /src/base64.h
parent7c0079f1beea81270597b5358cb0d783c617efde (diff)
downloadandroid-node-v8-7e0c3ab641c75cf5078f03695e54f7c238aa057f.tar.gz
android-node-v8-7e0c3ab641c75cf5078f03695e54f7c238aa057f.tar.bz2
android-node-v8-7e0c3ab641c75cf5078f03695e54f7c238aa057f.zip
src: fix base64 decoding
Make sure trailing garbage is not treated as a valid base64 character. Fixes: https://github.com/nodejs/node/issues/11987 PR-URL: https://github.com/nodejs/node/pull/11995 Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'src/base64.h')
-rw-r--r--src/base64.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/base64.h b/src/base64.h
index 64c4e330c0..92dc565e65 100644
--- a/src/base64.h
+++ b/src/base64.h
@@ -60,13 +60,13 @@ size_t base64_decode_slow(char* dst, size_t dstlen,
size_t k = 0;
for (;;) {
#define V(expr) \
- while (i < srclen) { \
+ for (;;) { \
const uint8_t c = src[i]; \
lo = unbase64(c); \
i += 1; \
if (lo < 64) \
break; /* Legal character. */ \
- if (c == '=') \
+ if (c == '=' || i >= srclen) \
return k; \
} \
expr; \