summaryrefslogtreecommitdiff
path: root/sys-auth/libnss-nis/files/libnss-nis-1.4-glibc-2.30.patch
blob: ac8d497ecb4ca21afdb3f6a260ff95a77e3746ed (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
From e9f0f4286d5a923eca1a9c84ff125268d144822e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 25 Jul 2019 12:10:56 -0700
Subject: [PATCH] nis-hosts: Remove use of RES_USE_INET6

Upstream glibc dropped it starting glibc 2.30
see
https://sourceware.org/git/?p=glibc.git;a=commit;h=3f8b44be0a658266adff5ece1e4bc3ce097a5dbe

Fixes issue #6

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/nis-hosts.c | 55 ++++++++++++-------------------------------------
 1 file changed, 13 insertions(+), 42 deletions(-)

diff --git a/src/nis-hosts.c b/src/nis-hosts.c
index 307b46e..bd3c4ad 100644
--- a/src/nis-hosts.c
+++ b/src/nis-hosts.c
@@ -35,15 +35,12 @@
 #include "libc-lock.h"
 #include "nss-nis.h"
 
-/* Get implementation for some internal functions. */
-#include "mapv4v6addr.h"
-
 #define ENTNAME         hostent
 #define DATABASE        "hosts"
 #define NEED_H_ERRNO
 
-#define EXTRA_ARGS      , af, flags
-#define EXTRA_ARGS_DECL , int af, int flags
+#define EXTRA_ARGS      , af
+#define EXTRA_ARGS_DECL , int af
 
 #define ENTDATA hostent_data
 struct hostent_data
@@ -67,19 +64,8 @@ LINE_PARSER
    /* Parse address.  */
    if (af != AF_INET6 && inet_pton (AF_INET, addr, entdata->host_addr) > 0)
      {
-       assert ((flags & AI_V4MAPPED) == 0 || af != AF_UNSPEC);
-       if (flags & AI_V4MAPPED)
-	 {
-	   map_v4v6_address ((char *) entdata->host_addr,
-			     (char *) entdata->host_addr);
-	   result->h_addrtype = AF_INET6;
-	   result->h_length = IN6ADDRSZ;
-	 }
-       else
-	 {
-	   result->h_addrtype = AF_INET;
-	   result->h_length = INADDRSZ;
-	 }
+       result->h_addrtype = AF_INET;
+       result->h_length = INADDRSZ;
      }
    else if (af != AF_INET
 	    && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
@@ -134,7 +120,7 @@ strong_alias (_nss_nis_sethostent, _nss_nis_endhostent)
 static enum nss_status
 internal_nis_gethostent_r (struct hostent *host, char *buffer,
 			   size_t buflen, int *errnop, int *h_errnop,
-			   int af, int flags)
+			   int af)
 {
   char *domain;
   if (yp_get_default_domain (&domain))
@@ -203,7 +189,7 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer,
 	++p;
       free (result);
 
-      parse_res = parse_line (p, host, data, buflen, errnop, af, flags);
+      parse_res = parse_line (p, host, data, buflen, errnop, af);
       if (parse_res == -1)
 	{
 	  free (outkey);
@@ -232,8 +218,7 @@ _nss_nis_gethostent_r (struct hostent *host, char *buffer, size_t buflen,
   __libc_lock_lock (lock);
 
   status = internal_nis_gethostent_r (host, buffer, buflen, errnop, h_errnop,
-			((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET),
-			((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0 ));
+			AF_INET);
 
   __libc_lock_unlock (lock);
 
@@ -244,7 +229,7 @@ _nss_nis_gethostent_r (struct hostent *host, char *buffer, size_t buflen,
 static enum nss_status
 internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
 			   char *buffer, size_t buflen, int *errnop,
-			   int *h_errnop, int flags)
+			   int *h_errnop)
 {
   uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct parser_data);
   buffer += pad;
@@ -318,7 +303,7 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
     ++p;
   free (result);
 
-  int parse_res = parse_line (p, host, data, buflen, errnop, af, flags);
+  int parse_res = parse_line (p, host, data, buflen, errnop, af);
 
   if (parse_res < 1 || host->h_addrtype != af)
     {
@@ -351,8 +336,7 @@ _nss_nis_gethostbyname2_r (const char *name, int af, struct hostent *host,
     }
 
   return internal_gethostbyname2_r (name, af, host, buffer, buflen, errnop,
-				    h_errnop,
-			((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
+				    h_errnop);
 }
 
 
@@ -360,18 +344,8 @@ enum nss_status
 _nss_nis_gethostbyname_r (const char *name, struct hostent *host, char *buffer,
 			  size_t buflen, int *errnop, int *h_errnop)
 {
-  if (_res.options & RES_USE_INET6)
-    {
-      enum nss_status status;
-
-      status = internal_gethostbyname2_r (name, AF_INET6, host, buffer, buflen,
-					  errnop, h_errnop, AI_V4MAPPED);
-      if (status == NSS_STATUS_SUCCESS)
-	return status;
-    }
-
   return internal_gethostbyname2_r (name, AF_INET, host, buffer, buflen,
-				    errnop, h_errnop, 0);
+				    errnop, h_errnop);
 }
 
 
@@ -433,9 +407,7 @@ _nss_nis_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
     ++p;
   free (result);
 
-  int parse_res = parse_line (p, host, data, buflen, errnop, af,
-			      ((_res.options & RES_USE_INET6)
-			       ? AI_V4MAPPED : 0));
+  int parse_res = parse_line (p, host, data, buflen, errnop, af);
   if (parse_res < 1)
     {
       if (parse_res == -1)
@@ -532,8 +504,7 @@ _nss_nis_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
   buflen -= pad;
 
   struct hostent host;
-  int parse_res = parse_line (result, &host, data, buflen, errnop, AF_UNSPEC,
-			      0);
+  int parse_res = parse_line (result, &host, data, buflen, errnop, AF_UNSPEC);
   if (parse_res < 1)
     {
       if (parse_res == -1)