fix: buffer overrun when quoted printable is at the end of line and output buffer #254
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.
In QPCleaner, write behind the buffer end could occur, when there was a
=XX
quoted printable token, line length was 1023 and remaining dest buffer space was only 1 byte. Because of line length, QPCleaner inserted=\r\n
, but only the equal sign fit into the output buffer. The rest went to qp.overflow.Then the algorithm wrote to
dest[n]
without any additional checks, butn
already pointed behind the buffer end.Now the equal sign is also written to overflow in such situation.
I've also noticed, that qp.lineLength is not incremented when qp.overflow is put at the beginning of new buffer and also when
=
from quoted printable token is inserted. Seems as a bug to me, but I don't fix it in this PR.