[prev in list] [next in list] [prev in thread] [next in thread]
List: freedesktop-xorg-devel
Subject: [PATCH xauth] Handle v4-mapped inet6 addresses correctly
From: Egbert Eich <eich () freedesktop ! org>
Date: 2013-09-30 23:17:09
Message-ID: 1380583029-20069-1-git-send-email-eich () freedesktop ! org
[Download RAW message or body]
Handling of v4-mapped inet6 addresses has been introduced
with commit 58140dbbd39389ad6af58e201e055f3d4b92d368:
Look for FamilyLocal if inet or inet6 address is loopback
These adresses should be treated as inet addresses. This patch
makes the code consistent with the handling if xcb_auth.c in
libxcb.
Signed-off-by: Egbert Eich <eich@freedesktop.org>
---
gethost.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/gethost.c b/gethost.c
index 48977bb..0a5aff5 100644
--- a/gethost.c
+++ b/gethost.c
@@ -245,17 +245,23 @@ struct addrlist *get_address_info (
} else if (ai->ai_family == AF_INET6) {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)ai->ai_addr;
src = &(sin6->sin6_addr);
- if (IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)src)
- || IN6_IS_ADDR_LOOPBACK((const struct in6_addr *)src)) {
- family = FamilyLocal;
- if (get_local_hostname (buf, sizeof buf)) {
- src = buf;
- len = strlen (buf);
- } else
- src = NULL;
+ if (!IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)src)) {
+ if (IN6_IS_ADDR_LOOPBACK((const struct in6_addr *)src)) {
+ family = FamilyLocal;
+ if (get_local_hostname (buf, sizeof buf)) {
+ src = buf;
+ len = strlen (buf);
+ } else
+ src = NULL;
+ } else {
+ len = sizeof(sin6->sin6_addr);
+ family = FamilyInternet6;
+ }
} else {
- len = sizeof(sin6->sin6_addr);
- family = FamilyInternet6;
+ src = &(sin6->sin6_addr.s6_addr[12]);
+ len = sizeof(((struct sockaddr_in *)
+ ai->ai_addr)->sin_addr);
+ family = FamilyInternet;
}
}
--
1.8.1.4
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic