summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-06-08 23:21:45 +0200
committerDaniel Stenberg <daniel@haxx.se>2019-06-10 08:01:50 +0200
commit1667d5599dec62aa6836560f01e5c90bad52c6bb (patch)
tree00e25dc7addeae3dc61e43beae58fa411bc4b19a
parent094b5f3540fec1401f514bc470f11f441527d30a (diff)
downloadcurl-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.c5
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 {