add tests for invalid keylen guard (issue #31/#33)#37
Merged
Conversation
dc1bc86 to
deacadf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds regression tests and a valgrind-based CI job for the memory leaks fixed in #34.
Tests (
test_invalid_keylen_returns_nil,test_invalid_keylen_does_not_leak_memory): verify thatkeylen=0,keylen>1024, androunds=0return nil, and that repeated calls with an out-of-range keylen don't leak.Memcheck CI job: runs the test suite under valgrind via
ruby_memcheckon Ubuntu. On unfixed code, each call to__bc_crypt_pbkdf("pass", "salt", 2000, 1)leaks 2000 bytes (xmallocbefore the guard, noxfreeon the error path); the 1000-iteration test produces ~2MB of reported leaks and fails the job. With #34's fix applied the guard fires beforexmallocand the job passes.Gemfile.memcheckkeepsruby_memcheckout of the main bundle (it requires Ruby >= 3.0, the project supports 2.7).