Fix base64_encode including '\0' in output. #289
Closed
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.
CryptBinaryToStringA([in, out] pcchString) has unusual behavior
So it requests a buffer size with room for a terminating '\0', and will write that terminator, but won't count it in the final length. And this std::string likewise implies a '\0'-termination, but doesn't consider that part of std::string::size().
The terminator written by CryptBinaryToStringA shouldn't be left as part of the content of str.
Currently this is causing winsparkle-tool to print embedded
'\0
characters in the output ofpublic-key
,sign
, etc. Which isn't visible in most terminals, but you can see it if you do e.g.winsparkle-tool ... | xxd
, and it can mess up if scripts capture the output.