You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
From 187d0795030ccb4f410eb6089e265ac3571e56dd Mon Sep 17 00:00:00 2001 |
|
From: Daniel Stenberg <daniel@haxx.se> |
|
Date: Mon, 25 Apr 2022 11:48:00 +0200 |
|
Subject: [PATCH] conncache: include the zone id in the "bundle" hashkey |
|
|
|
Make connections to two separate IPv6 zone ids create separate |
|
connections. |
|
|
|
Reported-by: Harry Sintonen |
|
Bug: https://curl.se/docs/CVE-2022-27775.html |
|
Closes #8747 |
|
|
|
Upstream-commit: 058f98dc3fe595f21dc26a5b9b1699e519ba5705 |
|
Signed-off-by: Kamil Dudka <kdudka@redhat.com> |
|
--- |
|
lib/conncache.c | 8 ++++++-- |
|
1 file changed, 6 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/lib/conncache.c b/lib/conncache.c |
|
index cd5756a..9b9f683 100644 |
|
--- a/lib/conncache.c |
|
+++ b/lib/conncache.c |
|
@@ -159,8 +159,12 @@ static void hashkey(struct connectdata *conn, char *buf, |
|
/* report back which name we used */ |
|
*hostp = hostname; |
|
|
|
- /* put the number first so that the hostname gets cut off if too long */ |
|
- msnprintf(buf, len, "%ld%s", port, hostname); |
|
+ /* put the numbers first so that the hostname gets cut off if too long */ |
|
+#ifdef ENABLE_IPV6 |
|
+ msnprintf(buf, len, "%u/%ld/%s", conn->scope_id, port, hostname); |
|
+#else |
|
+ msnprintf(buf, len, "%ld/%s", port, hostname); |
|
+#endif |
|
} |
|
|
|
/* Returns number of connections currently held in the connection cache. |
|
-- |
|
2.34.1 |
|
|
|
|