File: gresolver-Fix-loopback-detection-of-IPv6-addresses.patch

package info (click to toggle)
glib2.0 2.86.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 67,012 kB
  • sloc: ansic: 544,596; python: 9,702; sh: 1,612; xml: 1,482; perl: 1,222; cpp: 535; makefile: 321; javascript: 11
file content (40 lines) | stat: -rw-r--r-- 1,394 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
From: Patrick Griffis <pgriffis@igalia.com>
Date: Tue, 21 Oct 2025 15:42:54 -0500
Subject: gresolver: Fix loopback detection of IPv6 addresses

Previously the len passed to g_socket_address_new_from_native() was only
for IPv4 addresses and the constructor would fail.

This was reported and discussed here:
https://gitlab.gnome.org/GNOME/glib/-/commit/fe0139ee985075f3c12932d7123cb594356e7e9d#note_2581394

Origin: upstream, 2.86.2, commit:90c29b7fb2bb3c92d2e68b74c64c20a5418cf986
---
 gio/gthreadedresolver.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c
index 988015b..78740b0 100644
--- a/gio/gthreadedresolver.c
+++ b/gio/gthreadedresolver.c
@@ -292,11 +292,19 @@ check_only_has_loopback_interfaces (void)
   for (struct ifaddrs *addr = addrs; addr; addr = addr->ifa_next)
     {
       struct sockaddr *sa = addr->ifa_addr;
+      size_t addrlen;
       GSocketAddress *saddr;
       if (!sa)
         continue;
 
-      saddr = g_socket_address_new_from_native (sa, sizeof (struct sockaddr));
+      if (sa->sa_family == AF_INET)
+        addrlen = sizeof (struct sockaddr_in);
+      else if (sa->sa_family == AF_INET6)
+        addrlen = sizeof (struct sockaddr_in6);
+      else
+        continue;
+
+      saddr = g_socket_address_new_from_native (sa, addrlen);
       if (!saddr)
         continue;