# HG changeset patch # User Pascal Bellard # Date 1422632095 -3600 # Node ID 2b274e36aea3506531702d168704605a521a6692 # Parent 0ef4ad6ff5da35cb0ef81bc1dfab514a6aebc85a glibc: CVE-2015-0235 fix (again) diff -r 0ef4ad6ff5da -r 2b274e36aea3 glibc/stuff/glibc-2.13-CVE-2015-0235.patch --- a/glibc/stuff/glibc-2.13-CVE-2015-0235.patch Thu Jan 29 13:01:13 2015 +0100 +++ b/glibc/stuff/glibc-2.13-CVE-2015-0235.patch Fri Jan 30 16:34:55 2015 +0100 @@ -14,7 +14,15 @@ return -1; } -@@ -90,8 +93,9 @@ +@@ -84,14 +87,16 @@ + } + + size_needed = (sizeof (*host_addr) +- + sizeof (*h_addr_ptrs) + strlen (name) + 1); ++ + sizeof (*h_addr_ptrs) ++ + sizeof (*h_alias_ptr) + strlen (name) + 1); + + if (buffer_size == NULL) { if (buflen < size_needed) { @@ -25,7 +33,7 @@ __set_errno (ERANGE); goto done; } -@@ -110,7 +114,7 @@ +@@ -110,7 +115,7 @@ *buffer_size = 0; __set_errno (save); if (h_errnop != NULL) @@ -34,7 +42,7 @@ *result = NULL; goto done; } -@@ -150,7 +154,9 @@ +@@ -150,7 +155,9 @@ if (! ok) { *h_errnop = HOST_NOT_FOUND; @@ -45,7 +53,7 @@ *result = NULL; goto done; } -@@ -202,15 +208,6 @@ +@@ -202,15 +209,6 @@ if ((isxdigit (name[0]) && strchr (name, ':') != NULL) || name[0] == ':') { @@ -61,7 +69,7 @@ switch (af) { default: -@@ -226,7 +223,10 @@ +@@ -226,7 +224,10 @@ /* This is not possible. We cannot represent an IPv6 address in an `struct in_addr' variable. */ *h_errnop = HOST_NOT_FOUND; @@ -73,7 +81,7 @@ goto done; case AF_INET6: -@@ -234,42 +234,6 @@ +@@ -234,42 +235,6 @@ break; } @@ -116,7 +124,7 @@ for (cp = name;; ++cp) { if (!*cp) -@@ -282,7 +246,9 @@ +@@ -282,7 +247,9 @@ if (inet_pton (AF_INET6, name, host_addr) <= 0) { *h_errnop = HOST_NOT_FOUND; @@ -127,3 +135,15 @@ *result = NULL; goto done; } +--- glibc-2.13/nss/getXXbyYY_r.c ++++ glibc-2.13/nss/getXXbyYY_r.c +@@ -180,6 +180,9 @@ + case -1: + return errno; + case 1: ++#ifdef NEED_H_ERRNO ++ any_service = true; ++#endif + goto done; + } + #endif