fix for rt-43537: undefined values passed to the multi functions no long... #5
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.
This patch fixes rt-43537:
Calls to set_multi that contained an undefined value caused segmentation faults. The root cause of this was the de-referencing of a call to
av_fetch()
which returned a NULL pointer.To fix this a new function,
safe_av_fetch()
, was added to Fast.xs that checks the result ofav_fetch
for a NULL pointer or a pointer that does not pass anSvOK()
check. If such a value is encounteredsafe_av_fetch()
croaks.A new test t/malformed.t was added to test this new functionality. It adds three values to the server, then submits a series calls to
set_mutli()
with invalid arguments (in varying positions). It verifies that none of these calls changes the values of the keys on the server.