--- gdm/common/gdm-common.h (révision 5365) +++ gdm/common/gdm-common.h (copie de travail) @@ -38,6 +38,7 @@ G_BEGIN_DECLS +#define gdm_sockaddr_len(sa) (((struct sockaddr *)sa)->sa_family == AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)) gboolean gdm_address_equal (struct sockaddr_storage *sa, struct sockaddr_storage *sb); --- gdm/common/gdm-common.c (révision 5365) +++ gdm/common/gdm-common.c (copie de travail) @@ -107,7 +107,7 @@ host [0] = '\0'; serv [0] = '\0'; getnameinfo ((const struct sockaddr *)ss, - sizeof (struct sockaddr_storage), + gdm_sockaddr_len(ss), host, sizeof (host), serv, sizeof (serv), NI_NUMERICHOST | NI_NUMERICSERV); --- gdm/daemon/gdm-xdmcp-manager.c (révision 5365) +++ gdm/daemon/gdm-xdmcp-manager.c (copie de travail) @@ -762,7 +762,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); g_free (status.data); } @@ -805,7 +805,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); last_time = time (NULL); } @@ -907,7 +907,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr) sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); g_free (port.data); g_free (address.data); @@ -1435,7 +1435,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); g_free (address.data); } @@ -1507,7 +1507,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); } static void @@ -1655,7 +1655,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); /* Send MANAGED_FORWARD to indicate that the connection * reached some sort of resolution */ @@ -1805,7 +1805,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); gdm_address_get_info (clnt_sa, &host, NULL); g_debug ("XDMCP: Sending ACCEPT to %s with SessionID=%ld", @@ -2107,7 +2107,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); } static void @@ -2131,7 +2131,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); /* * This was from a forwarded query quite apparently so @@ -2384,7 +2384,7 @@ XdmcpFlush (manager->priv->socket_fd, &manager->priv->buf, (XdmcpNetaddr)clnt_sa, - (int)sizeof (struct sockaddr_storage)); + (int)gdm_sockaddr_len(clnt_sa)); } static void --- gdm/daemon/getvt.c (révision 5365) +++ gdm/daemon/getvt.c (copie de travail) @@ -56,6 +56,9 @@ unsigned char *buf; unsigned long num; + if (display == NULL) + return -1; + prop = XInternAtom (display, "XFree86_VT", False); if (prop == None) { gdm_debug ("no XFree86_VT atom\n"); --- gdm/daemon/misc.c (révision 5365) +++ gdm/daemon/misc.c (copie de travail) @@ -920,10 +920,17 @@ snprintf (hostbuf, BUFSIZ-1, "localhost"); } - memset (&hints, 0, sizeof (hints)); + memset (&hints, 0, sizeof (hints)); + hints.ai_family = AF_INET; + #ifdef ENABLE_IPV6 - hints.ai_family |= AF_INET6; + hints.ai_family = AF_INET6; +#endif + +#ifdef ENABLE_IPV6 + if (getaddrinfo (hostbuf, NULL, &hints, &result) != 0) { + hints.ai_family = AF_INET; #endif if (getaddrinfo (hostbuf, NULL, &hints, &result) != 0) { @@ -932,6 +939,9 @@ return NULL; } +#ifdef ENABLE_IPV6 + } +#endif for (res = result; res != NULL; res = res->ai_next) { struct sockaddr_storage *sa;