summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/evp/encode.c12
-rw-r--r--src/lib/libssl/src/crypto/evp/encode.c12
2 files changed, 24 insertions, 0 deletions
diff --git a/src/lib/libcrypto/evp/encode.c b/src/lib/libcrypto/evp/encode.c
index 9540a849c9..2268b8d2f2 100644
--- a/src/lib/libcrypto/evp/encode.c
+++ b/src/lib/libcrypto/evp/encode.c
@@ -259,6 +259,12 @@ EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
259 goto end; 259 goto end;
260 } 260 }
261 261
262 /* There should not be base64 data after padding. */
263 if (eof && tmp != '=' && tmp != '\r' && tmp != '\n') {
264 rv = -1;
265 goto end;
266 }
267
262 /* have we seen a '=' which is 'definitely' the last 268 /* have we seen a '=' which is 'definitely' the last
263 * input line. seof will point to the character that 269 * input line. seof will point to the character that
264 * holds it. and eof will hold how many characters to 270 * holds it. and eof will hold how many characters to
@@ -269,6 +275,12 @@ EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
269 eof++; 275 eof++;
270 } 276 }
271 277
278 /* There should be no more than two padding markers. */
279 if (eof > 2) {
280 rv = -1;
281 goto end;
282 }
283
272 if (v == B64_CR) { 284 if (v == B64_CR) {
273 ln = 0; 285 ln = 0;
274 if (exp_nl) 286 if (exp_nl)
diff --git a/src/lib/libssl/src/crypto/evp/encode.c b/src/lib/libssl/src/crypto/evp/encode.c
index 9540a849c9..2268b8d2f2 100644
--- a/src/lib/libssl/src/crypto/evp/encode.c
+++ b/src/lib/libssl/src/crypto/evp/encode.c
@@ -259,6 +259,12 @@ EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
259 goto end; 259 goto end;
260 } 260 }
261 261
262 /* There should not be base64 data after padding. */
263 if (eof && tmp != '=' && tmp != '\r' && tmp != '\n') {
264 rv = -1;
265 goto end;
266 }
267
262 /* have we seen a '=' which is 'definitely' the last 268 /* have we seen a '=' which is 'definitely' the last
263 * input line. seof will point to the character that 269 * input line. seof will point to the character that
264 * holds it. and eof will hold how many characters to 270 * holds it. and eof will hold how many characters to
@@ -269,6 +275,12 @@ EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
269 eof++; 275 eof++;
270 } 276 }
271 277
278 /* There should be no more than two padding markers. */
279 if (eof > 2) {
280 rv = -1;
281 goto end;
282 }
283
272 if (v == B64_CR) { 284 if (v == B64_CR) {
273 ln = 0; 285 ln = 0;
274 if (exp_nl) 286 if (exp_nl)