With GSI auth, free Entity variable before replacing it from the cache #347
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.
We recently enabled GSI authentication with xrootd 4.2.3. It appears each GSI authentication causes about 6kB of memory to be leaked.
Toward the beginning of XrdSecProtocolgsi::Authenticate(), memory may be
allocated for the Entity with strdup():
https://github.com/xrootd/xrootd/blob/a76eccc1f2/src/XrdSecgsi/XrdSecProtocolgsi.cc#L1873
Later in the same function, the Entity may be replaced with an entry from the
cache:
https://github.com/xrootd/xrootd/blob/a76eccc1f2/src/XrdSecgsi/XrdSecProtocolgsi.cc#L1951
However, the memory allocated with strdup() is not free()d. This patch calls FreeEntity()
before replacing Entity with a copy from the cache.
Regards,
John
valgrind output for the largest lost block after 20 GSI authentications (xrootd 4.2.3):