From b7663a51b43a3649e62c04d89c68c74368babe38 Mon Sep 17 00:00:00 2001 From: Guido Vranken Date: Tue, 25 May 2021 03:52:16 +0200 Subject: [PATCH 1/2] Fix length calculations in Base64_SkipNewline ZD 12328 --- wolfcrypt/src/coding.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/src/coding.c b/wolfcrypt/src/coding.c index ec1bc4b13..0b559952b 100644 --- a/wolfcrypt/src/coding.c +++ b/wolfcrypt/src/coding.c @@ -136,9 +136,12 @@ static WC_INLINE int Base64_SkipNewline(const byte* in, word32 *inLen, word32 *o WOLFSSL_MSG("Bad end of line in Base64 Decode"); return ASN_INPUT_E; } - curChar = in[j]; + + if (len) { + curChar = in[j]; + } } - while (len && curChar == ' ') { + while (len > 1 && curChar == ' ') { /* skip whitespace at beginning of line */ curChar = in[++j]; len--; From 360d6c8a4f743e6ffa97def581fe928a7cb4ec53 Mon Sep 17 00:00:00 2001 From: Guido Vranken Date: Wed, 26 May 2021 00:25:27 +0200 Subject: [PATCH 2/2] Additional fix for Base64_SkipNewline --- wolfcrypt/src/coding.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/src/coding.c b/wolfcrypt/src/coding.c index 0b559952b..1b6bd5795 100644 --- a/wolfcrypt/src/coding.c +++ b/wolfcrypt/src/coding.c @@ -141,10 +141,10 @@ static WC_INLINE int Base64_SkipNewline(const byte* in, word32 *inLen, word32 *o curChar = in[j]; } } - while (len > 1 && curChar == ' ') { - /* skip whitespace at beginning of line */ - curChar = in[++j]; - len--; + while (len && curChar == ' ') { + if (--len > 0) { + curChar = in[++j]; + } } if (!len) { return BUFFER_E;