diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-06-08 23:21:45 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-06-10 08:01:50 +0200 |
commit | 1667d5599dec62aa6836560f01e5c90bad52c6bb (patch) | |
tree | 00e25dc7addeae3dc61e43beae58fa411bc4b19a | |
parent | 094b5f3540fec1401f514bc470f11f441527d30a (diff) | |
download | curl-1667d5599dec62aa6836560f01e5c90bad52c6bb.tar.gz |
bindlocal: detect and avoid IP version mismatches in bind()
Reported-by: Alex Grebenschikov
Fixes #3993
Closes #4002
-rw-r--r-- | lib/connect.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/connect.c b/lib/connect.c index 002535b42..4a1f2c640 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -368,6 +368,11 @@ static CURLcode bindlocal(struct connectdata *conn, infof(data, "Name '%s' family %i resolved to '%s' family %i\n", dev, af, myhost, h->addr->ai_family); Curl_resolv_unlock(data, h); + if(af != h->addr->ai_family) { + /* bad IP version combo, signal the caller to try another address + family if available */ + return CURLE_UNSUPPORTED_PROTOCOL; + } done = 1; } else { |