Prevent segfault in TCP connect when using MUSL #831
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.
Passing null to
freeaddrinfois undefined behaviour. While glibc and uClibc both handle it safely, musl does not, so a bad nodename or servname causes a segfault.This change ensures that the ai_list is non-null before trying to free it in the
connectfunction. The check already exists forlistenIn musl and glibc this condition will never be met, meaning
freeaddrinfowill never actually be ran. There's no possibility for errors to be returned after memory allocation occurs in those implementations either, so there's no remaining risk of memory leaks.In uClibc, there are some code paths where errors occur after memory is allocated, and this still guarantees it will get freed.