Fix PER encoding of empty octet strings missing the length determinant #393
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.
During implementation of some more advanced ASN.1 descriptions, we ran across an issue where the length determinant would not be part of the payload if an octet string had an effective zero length.
This wasn't initially an issue, because the string we were parsing was located at the end of the buffer, and with zero initialized memory (on the C-parser-side), it found the correct length determinant of zero by accident. While building round-trip unit-tests for our payloads, this blew up - hence the amount of test code for the single line fix... :-)
I've tried to write some good-case/bad-case tests to not break any other functionality, and kept all other tests that I wrote while investigating the issue.
Happy new year! 🎉