cunit/charset:test_charset_decode: check for base64 input with invalid length #5006
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Valid base64 encoded input must have specific length, possibly by appending
=
characters. Here I add a test containing base64 encoded input with invalid length. In this casecharset_decode()
should fail, but does currently succeed.The problem is with the Sieve body test, which on MIME parts with
Content-Transfer-Encoding: base64
and invalid length of characters produces unpredictable results. Yahoo FBL does send such MIME parts.This could be handled by producing NULL or "" as output, on such input. https://www.rfc-editor.org/rfc/rfc3548#section-2.2 suggests skipping the padding characters in transit, and appending them just when decoding - this is one more valid approach.
In any case the current implementation skips handling this case and when I ran my code under Address senitizer, this was triggered for unknown input: