Add (EXPERIMENTAL) in prompts of those options that depend on EXPERIMENTAL.
1 --- libc/resolv/nss_dns/dns-host.c.jj Tue Sep 14 03:05:08 1999
2 +++ libc/resolv/nss_dns/dns-host.c Thu Oct 10 13:07:33 2002
3 @@ -129,9 +129,10 @@ _nss_dns_gethostbyname2_r (const char *n
4 char *buffer, size_t buflen, int *errnop,
7 - querybuf host_buffer;
8 + querybuf *host_buffer;
11 + enum nss_status status;
15 @@ -159,16 +160,25 @@ _nss_dns_gethostbyname2_r (const char *n
16 if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL)
19 - n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf));
20 + host_buffer = (querybuf *) malloc (sizeof (*host_buffer));
21 + if (host_buffer == NULL) {
23 + return NSS_STATUS_UNAVAIL;
26 + n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf));
30 *errnop = *h_errnop == TRY_AGAIN ? EAGAIN : ENOENT;
32 return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
35 - return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen,
37 + status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen,
44 @@ -205,7 +215,7 @@ _nss_dns_gethostbyaddr_r (const char *ad
45 char *h_addr_ptrs[MAX_NR_ADDRS + 1];
47 } *host_data = (struct host_data *) buffer;
48 - querybuf host_buffer;
49 + querybuf *host_buffer;
50 char qbuf[MAXDNAME+1], *qp;
53 @@ -257,17 +267,25 @@ _nss_dns_gethostbyaddr_r (const char *ad
57 - n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf,
58 - sizeof host_buffer);
59 + host_buffer = (querybuf *) malloc (sizeof (*host_buffer));
60 + if (host_buffer == NULL) {
62 + return NSS_STATUS_UNAVAIL;
65 + n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf,
66 + sizeof (host_buffer->buf));
72 return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
75 - status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
76 + status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
79 if (status != NSS_STATUS_SUCCESS)
82 --- libc/resolv/nss_dns/dns-network.c.jj Wed Jun 30 12:01:14 1999
83 +++ libc/resolv/nss_dns/dns-network.c Thu Oct 10 13:09:49 2002
84 @@ -113,24 +113,36 @@ _nss_dns_getnetbyname_r (const char *nam
85 char *buffer, size_t buflen, int *errnop)
87 /* Return entry for network with NAME. */
88 - querybuf net_buffer;
89 + querybuf *net_buffer;
92 + enum nss_status status;
94 qbuf = strdupa (name);
95 - anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
98 + net_buffer = (querybuf *) malloc (sizeof (*net_buffer));
99 + if (net_buffer == NULL)
102 + return NSS_STATUS_UNAVAIL;
105 + anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf,
106 + sizeof (net_buffer->buf));
112 return (errno == ECONNREFUSED
113 || errno == EPFNOSUPPORT
114 || errno == EAFNOSUPPORT)
115 ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
118 - return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME);
119 + status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME);
125 @@ -140,7 +152,7 @@ _nss_dns_getnetbyaddr_r (long net, int t
127 /* Return entry for network with NAME. */
128 enum nss_status status;
129 - querybuf net_buffer;
130 + querybuf *net_buffer;
131 unsigned int net_bytes[4];
134 @@ -176,19 +188,28 @@ _nss_dns_getnetbyaddr_r (long net, int t
138 - anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
139 - sizeof (querybuf));
140 + net_buffer = (querybuf *) malloc (sizeof (*net_buffer));
141 + if (net_buffer == NULL)
144 + return NSS_STATUS_UNAVAIL;
147 + anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf,
148 + sizeof (net_buffer->buf));
154 return (errno == ECONNREFUSED
155 || errno == EPFNOSUPPORT
156 || errno == EAFNOSUPPORT)
157 ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
160 - status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR);
161 + status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR);
163 if (status == NSS_STATUS_SUCCESS)
165 /* Strip trailing zeros. */
166 --- libc/resolv/res_query.c.jj Wed Jun 30 12:01:06 1999
167 +++ libc/resolv/res_query.c Thu Oct 10 13:01:12 2002
168 @@ -106,7 +106,7 @@ res_query(name, class, type, answer, ans
169 u_char *answer; /* buffer to put answer */
170 int anslen; /* size of answer buffer */
172 - u_char buf[MAXPACKET];
174 register HEADER *hp = (HEADER *) answer;
177 @@ -121,17 +121,25 @@ res_query(name, class, type, answer, ans
178 printf(";; res_query(%s, %d, %d)\n", name, class, type);
181 + buf = malloc (MAXPACKET);
183 + __set_h_errno (NETDB_INTERNAL);
187 n = res_mkquery(QUERY, name, class, type, NULL, 0, NULL,
192 if (_res.options & RES_DEBUG)
193 printf(";; res_query: mkquery failed\n");
195 __set_h_errno (NO_RECOVERY);
199 n = res_send(buf, n, answer, anslen);
203 if (_res.options & RES_DEBUG)
204 --- libc/resolv/gethnamaddr.c.jj Tue Dec 7 11:50:36 1999
205 +++ libc/resolv/gethnamaddr.c Thu Oct 10 15:05:50 2002
206 @@ -512,10 +512,11 @@ gethostbyname2(name, af)
212 register const char *cp;
214 int n, size, type, len;
215 + struct hostent *ret;
216 extern struct hostent *_gethtbyname2();
218 if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
219 @@ -617,13 +618,22 @@ gethostbyname2(name, af)
223 - if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf.buf))) < 0) {
224 + buf = (querybuf *) malloc (sizeof (*buf));
226 + __set_h_errno (NETDB_INTERNAL);
230 + if ((n = res_search(name, C_IN, type, buf->buf, sizeof(buf->buf))) < 0) {
232 dprintf("res_search failed (%d)\n", n);
233 if (errno == ECONNREFUSED)
234 return (_gethtbyname2(name, af));
237 - return (getanswer(&buf, n, name, type));
238 + ret = getanswer(buf, n, name, type);
244 @@ -636,7 +646,7 @@ gethostbyaddr(addr, len, af)
245 static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff };
246 static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
250 register struct hostent *hp;
251 char qbuf[MAXDNAME+1], *qp;
253 @@ -697,14 +707,24 @@ gethostbyaddr(addr, len, af)
257 - n = res_query(qbuf, C_IN, T_PTR, (u_char *)buf.buf, sizeof buf.buf);
259 + buf = (querybuf *) malloc (sizeof (*buf));
261 + __set_h_errno (NETDB_INTERNAL);
265 + n = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof buf->buf);
268 dprintf("res_query failed (%d)\n", n);
269 if (errno == ECONNREFUSED)
270 return (_gethtbyaddr(addr, len, af));
273 - if (!(hp = getanswer(&buf, n, qbuf, T_PTR)))
274 + hp = getanswer(buf, n, qbuf, T_PTR);
277 return (NULL); /* h_errno was set by getanswer() */
280 --- libc/resolv/getnetnamadr.c.jj Wed Jun 30 12:00:50 1999
281 +++ libc/resolv/getnetnamadr.c Thu Oct 10 13:14:01 2002
282 @@ -210,7 +210,7 @@ getnetbyaddr(net, net_type)
284 unsigned int netbr[4];
289 u_int32_t net2; /* Changed from unsigned long --roland */
290 struct netent *net_entry;
291 @@ -236,8 +236,15 @@ getnetbyaddr(net, net_type)
295 - anslen = res_query(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf));
297 + buf = (querybuf *) malloc (sizeof (*buf));
302 + anslen = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
306 if (_res.options & RES_DEBUG)
307 printf("res_query failed\n");
308 @@ -246,7 +253,8 @@ getnetbyaddr(net, net_type)
309 return (_getnetbyaddr(net, net_type));
312 - net_entry = getnetanswer(&buf, anslen, BYADDR);
313 + net_entry = getnetanswer(buf, anslen, BYADDR);
316 unsigned u_net = net; /* maybe net should be unsigned ? */
318 @@ -264,7 +272,7 @@ getnetbyname(net)
319 register const char *net;
325 struct netent *net_entry;
327 @@ -273,8 +281,13 @@ getnetbyname(net)
330 strcpy(&qbuf[0], net);
331 - anslen = res_search(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf));
332 + buf = (querybuf *) malloc (sizeof (*buf));
336 + anslen = res_search(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
340 if (_res.options & RES_DEBUG)
341 printf("res_query failed\n");
342 @@ -283,7 +296,8 @@ getnetbyname(net)
343 return (_getnetbyname(net));
344 return (_getnetbyname(net));
346 - net_entry = getnetanswer(&buf, anslen, BYNAME);
347 + net_entry = getnetanswer(buf, anslen, BYNAME);
351 return (_getnetbyname(net));
352 --- libc/glibc-compat/nss_dns/dns-host.c.jj Mon Jan 3 20:07:08 2000
353 +++ libc/glibc-compat/nss_dns/dns-host.c Thu Oct 10 12:46:24 2002
354 @@ -126,9 +126,10 @@ enum nss_status
355 _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result,
356 char *buffer, size_t buflen, int *h_errnop)
358 - querybuf host_buffer;
359 + querybuf *host_buffer;
362 + enum nss_status status;
366 @@ -156,15 +157,22 @@ _nss_dns_gethostbyname2_r (const char *n
367 if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL)
370 - n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf));
371 + host_buffer = (querybuf *) malloc (sizeof (querybuf));
372 + if (host_buffer == NULL)
373 + return NSS_STATUS_UNAVAIL;
375 + n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf));
379 + free (host_buffer);
380 return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
383 - return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen,
385 + status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen,
387 + free (host_buffer);
392 @@ -200,7 +208,7 @@ _nss_dns_gethostbyaddr_r (const char *ad
393 char *h_addr_ptrs[MAX_NR_ADDRS + 1];
395 } *host_data = (struct host_data *) buffer;
396 - querybuf host_buffer;
397 + querybuf *host_buffer;
398 char qbuf[MAXDNAME+1], *qp;
401 @@ -251,16 +259,22 @@ _nss_dns_gethostbyaddr_r (const char *ad
405 - n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf,
406 - sizeof host_buffer);
407 + host_buffer = (querybuf *) malloc (sizeof (querybuf));
408 + if (host_buffer == NULL)
409 + return NSS_STATUS_UNAVAIL;
411 + n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf,
412 + sizeof (host_buffer->buf));
416 + free (host_buffer);
417 return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
420 - status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
421 + status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
423 + free (host_buffer);
424 if (status != NSS_STATUS_SUCCESS)
427 --- libc/glibc-compat/nss_dns/dns-network.c.jj Mon Jan 3 20:07:08 2000
428 +++ libc/glibc-compat/nss_dns/dns-network.c Thu Oct 10 12:46:24 2002
429 @@ -107,21 +107,32 @@ _nss_dns_getnetbyname_r (const char *nam
430 char *buffer, size_t buflen)
432 /* Return entry for network with NAME. */
433 - querybuf net_buffer;
434 + querybuf *net_buffer;
437 + enum nss_status status;
439 qbuf = strdupa (name);
440 - anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
441 - sizeof (querybuf));
443 + net_buffer = (querybuf *) malloc (sizeof (querybuf));
444 + if (net_buffer == NULL)
445 + return NSS_STATUS_UNAVAIL;
447 + anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf,
448 + sizeof (net_buffer->buf));
450 - /* Nothing found. */
451 - return (errno == ECONNREFUSED
452 - || errno == EPFNOSUPPORT
453 - || errno == EAFNOSUPPORT)
454 - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
457 + /* Nothing found. */
458 + return (errno == ECONNREFUSED
459 + || errno == EPFNOSUPPORT
460 + || errno == EAFNOSUPPORT)
461 + ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
464 - return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME);
465 + status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME);
471 @@ -131,7 +142,7 @@ _nss_dns_getnetbyaddr_r (long net, int t
473 /* Return entry for network with NAME. */
474 enum nss_status status;
475 - querybuf net_buffer;
476 + querybuf *net_buffer;
477 unsigned int net_bytes[4];
480 @@ -167,16 +178,24 @@ _nss_dns_getnetbyaddr_r (long net, int t
484 - anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
485 - sizeof (querybuf));
486 + net_buffer = (querybuf *) malloc (sizeof (querybuf));
487 + if (net_buffer == NULL)
488 + return NSS_STATUS_UNAVAIL;
490 + anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf,
491 + sizeof (net_buffer->buf));
493 - /* Nothing found. */
494 - return (errno == ECONNREFUSED
495 - || errno == EPFNOSUPPORT
496 - || errno == EAFNOSUPPORT)
497 - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
500 + /* Nothing found. */
501 + return (errno == ECONNREFUSED
502 + || errno == EPFNOSUPPORT
503 + || errno == EAFNOSUPPORT)
504 + ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
507 - status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR);
508 + status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR);
510 if (status == NSS_STATUS_SUCCESS)
512 /* Strip trailing zeros. */