diff options
author | Nikolai Vavilov <vvnicholas@gmail.com> | 2017-03-22 23:31:12 +0200 |
---|---|---|
committer | Nikolai Vavilov <vvnicholas@gmail.com> | 2017-03-31 23:00:02 +0300 |
commit | 7e0c3ab641c75cf5078f03695e54f7c238aa057f (patch) | |
tree | 5438185cdd2247fc585461c37ffeadb869afd191 /src/base64.h | |
parent | 7c0079f1beea81270597b5358cb0d783c617efde (diff) | |
download | android-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.h | 4 |
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; \ |