forked from wolfSSL/wolfssl
Add return value checks and fixed typos.
This commit is contained in:
@@ -6942,7 +6942,7 @@ int wolfSSL_EVP_EncodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx,
|
|||||||
|
|
||||||
*outl = 0;
|
*outl = 0;
|
||||||
|
|
||||||
/* if the remaining data exit in the ctx, add input data to them
|
/* if the remaining data exists in the ctx, add input data to them
|
||||||
* to create a block(48bytes) for encoding
|
* to create a block(48bytes) for encoding
|
||||||
*/
|
*/
|
||||||
if (ctx->remaining > 0 && inl > 0) {
|
if (ctx->remaining > 0 && inl > 0) {
|
||||||
@@ -6958,6 +6958,7 @@ int wolfSSL_EVP_EncodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx,
|
|||||||
outsz = BASE64_ENCODE_RESULT_BLOCK_SIZE + 1;
|
outsz = BASE64_ENCODE_RESULT_BLOCK_SIZE + 1;
|
||||||
res = Base64_Encode(ctx->data, BASE64_ENCODE_BLOCK_SIZE, out,
|
res = Base64_Encode(ctx->data, BASE64_ENCODE_BLOCK_SIZE, out,
|
||||||
&outsz);
|
&outsz);
|
||||||
|
ctx->remaining = 0;
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
*outl = outsz;
|
*outl = outsz;
|
||||||
else
|
else
|
||||||
@@ -6988,7 +6989,7 @@ int wolfSSL_EVP_EncodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if remaining data exit, copy them into ctx for the next call*/
|
/* if remaining data exists, copy them into ctx for the next call*/
|
||||||
if (inl > 0) {
|
if (inl > 0) {
|
||||||
XMEMSET(ctx->data, 0, sizeof(ctx->data));
|
XMEMSET(ctx->data, 0, sizeof(ctx->data));
|
||||||
XMEMCPY(ctx->data, in, inl);
|
XMEMCPY(ctx->data, in, inl);
|
||||||
@@ -7014,6 +7015,10 @@ void wolfSSL_EVP_EncodeFinal(WOLFSSL_EVP_ENCODE_CTX* ctx,
|
|||||||
*outl = 0;
|
*outl = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (ctx->remaining >= BASE64_ENCODE_RESULT_BLOCK_SIZE) {
|
||||||
|
*outl = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
/* process remaining data in ctx */
|
/* process remaining data in ctx */
|
||||||
outsz = BASE64_ENCODE_RESULT_BLOCK_SIZE + 1; /* 64 byte and one for LF*/
|
outsz = BASE64_ENCODE_RESULT_BLOCK_SIZE + 1; /* 64 byte and one for LF*/
|
||||||
res = Base64_Encode(ctx->data, ctx->remaining ,out, &outsz);
|
res = Base64_Encode(ctx->data, ctx->remaining ,out, &outsz);
|
||||||
@@ -7118,7 +7123,16 @@ int wolfSSL_EVP_DecodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* process data in input buffer */
|
/* Base64_Decode is not a streaming process, so it processes
|
||||||
|
* the input data and exits. If a line break or whitespace
|
||||||
|
* character is found in the input data, it will be skipped,
|
||||||
|
* but if the end point of the input data is reached as a result,
|
||||||
|
* Base64_Decode will stop processing there. The data cleansing is
|
||||||
|
* required before Base64_Decode so that the processing does not
|
||||||
|
* stop within 4 bytes, which is the unit of Base64 decoding processing.
|
||||||
|
* The logic that exists before calling Base64_Decode in a While Loop is
|
||||||
|
* a data cleansing process that removes line breaks and whitespace.
|
||||||
|
*/
|
||||||
while (inLen > 3) {
|
while (inLen > 3) {
|
||||||
if ((res = Base64_SkipNewline(in, &inLen, &j)) != 0) {
|
if ((res = Base64_SkipNewline(in, &inLen, &j)) != 0) {
|
||||||
if (res == BUFFER_E) {
|
if (res == BUFFER_E) {
|
||||||
@@ -7188,7 +7202,7 @@ int wolfSSL_EVP_DecodeUpdate(WOLFSSL_EVP_ENCODE_CTX* ctx,
|
|||||||
/* decode four bytes */
|
/* decode four bytes */
|
||||||
outsz = sizeof(ctx->data);
|
outsz = sizeof(ctx->data);
|
||||||
res = Base64_Decode( e, BASE64_DECODE_BLOCK_SIZE, out, &outsz);
|
res = Base64_Decode( e, BASE64_DECODE_BLOCK_SIZE, out, &outsz);
|
||||||
if (res == ASN_INPUT_E) {
|
if (res < 0) {
|
||||||
*outl = 0;
|
*outl = 0;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user