Decrement ref counter only once on key object free #528
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 is a suggested solution to the issue I describe in issue #527.
By moving the decrement of
obj->refcnt
to after the if-section forobj->evp_key
the counter will not be decremented twice ifobj->evp_key
istrue
and we get another call as result of theEVP_PKEY_free()
.Without this patch the decrement will be done twice and the comparison with
0
will fail since the value goes negative. This means that the cleanup code at the end is never run.As far as I can see there shouldn't be scenarios where the current behavior is wanted, but I of course do not have the big picture as clear as you have.