1.1 --- a/patches/glibc/compat-2.1/rh62-12-glibc-compat-2.1.3-maxpacket.patch Tue Aug 14 19:32:22 2007 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,512 +0,0 @@
1.4 -#--- libc/resolv/nss_dns/dns-host.c.jj Tue Sep 14 03:05:08 1999
1.5 -#+++ libc/resolv/nss_dns/dns-host.c Thu Oct 10 13:07:33 2002
1.6 -#@@ -129,9 +129,10 @@ _nss_dns_gethostbyname2_r (const char *n
1.7 -# char *buffer, size_t buflen, int *errnop,
1.8 -# int *h_errnop)
1.9 -# {
1.10 -#- querybuf host_buffer;
1.11 -#+ querybuf *host_buffer;
1.12 -# int size, type, n;
1.13 -# const char *cp;
1.14 -#+ enum nss_status status;
1.15 -#
1.16 -# switch (af) {
1.17 -# case AF_INET:
1.18 -#@@ -159,16 +160,25 @@ _nss_dns_gethostbyname2_r (const char *n
1.19 -# if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL)
1.20 -# name = cp;
1.21 -#
1.22 -#- n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf));
1.23 -#+ host_buffer = (querybuf *) malloc (sizeof (*host_buffer));
1.24 -#+ if (host_buffer == NULL) {
1.25 -#+ *errnop = ENOMEM;
1.26 -#+ return NSS_STATUS_UNAVAIL;
1.27 -#+ }
1.28 -#+
1.29 -#+ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf));
1.30 -# if (n < 0)
1.31 -# {
1.32 -# *h_errnop = h_errno;
1.33 -# *errnop = *h_errnop == TRY_AGAIN ? EAGAIN : ENOENT;
1.34 -#+ free (host_buffer);
1.35 -# return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.36 -# }
1.37 -#
1.38 -#- return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen,
1.39 -#- errnop, h_errnop);
1.40 -#+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen,
1.41 -#+ errnop, h_errnop);
1.42 -#+ free (host_buffer);
1.43 -#+ return status;
1.44 -# }
1.45 -#
1.46 -#
1.47 -#@@ -205,7 +215,7 @@ _nss_dns_gethostbyaddr_r (const char *ad
1.48 -# char *h_addr_ptrs[MAX_NR_ADDRS + 1];
1.49 -# char linebuffer[0];
1.50 -# } *host_data = (struct host_data *) buffer;
1.51 -#- querybuf host_buffer;
1.52 -#+ querybuf *host_buffer;
1.53 -# char qbuf[MAXDNAME+1], *qp;
1.54 -# size_t size;
1.55 -# int n, status;
1.56 -#@@ -257,17 +267,25 @@ _nss_dns_gethostbyaddr_r (const char *ad
1.57 -# /* Cannot happen. */
1.58 -# }
1.59 -#
1.60 -#- n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf,
1.61 -#- sizeof host_buffer);
1.62 -#+ host_buffer = (querybuf *) malloc (sizeof (*host_buffer));
1.63 -#+ if (host_buffer == NULL) {
1.64 -#+ *errnop = ENOMEM;
1.65 -#+ return NSS_STATUS_UNAVAIL;
1.66 -#+ }
1.67 -#+
1.68 -#+ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf,
1.69 -#+ sizeof (host_buffer->buf));
1.70 -# if (n < 0)
1.71 -# {
1.72 -# *h_errnop = h_errno;
1.73 -# *errnop = errno;
1.74 -#+ free (host_buffer);
1.75 -# return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.76 -# }
1.77 -#
1.78 -#- status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
1.79 -#+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
1.80 -# errnop, h_errnop);
1.81 -#+ free (host_buffer);
1.82 -# if (status != NSS_STATUS_SUCCESS)
1.83 -# {
1.84 -# *h_errnop = h_errno;
1.85 -#--- libc/resolv/nss_dns/dns-network.c.jj Wed Jun 30 12:01:14 1999
1.86 -#+++ libc/resolv/nss_dns/dns-network.c Thu Oct 10 13:09:49 2002
1.87 -#@@ -113,24 +113,36 @@ _nss_dns_getnetbyname_r (const char *nam
1.88 -# char *buffer, size_t buflen, int *errnop)
1.89 -# {
1.90 -# /* Return entry for network with NAME. */
1.91 -#- querybuf net_buffer;
1.92 -#+ querybuf *net_buffer;
1.93 -# int anslen;
1.94 -# char *qbuf;
1.95 -#+ enum nss_status status;
1.96 -#
1.97 -# qbuf = strdupa (name);
1.98 -#- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
1.99 -#- sizeof (querybuf));
1.100 -#+
1.101 -#+ net_buffer = (querybuf *) malloc (sizeof (*net_buffer));
1.102 -#+ if (net_buffer == NULL)
1.103 -#+ {
1.104 -#+ *errnop = ENOMEM;
1.105 -#+ return NSS_STATUS_UNAVAIL;
1.106 -#+ }
1.107 -#+
1.108 -#+ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf,
1.109 -#+ sizeof (net_buffer->buf));
1.110 -# if (anslen < 0)
1.111 -# {
1.112 -# /* Nothing found. */
1.113 -# *errnop = errno;
1.114 -#+ free (net_buffer);
1.115 -# return (errno == ECONNREFUSED
1.116 -# || errno == EPFNOSUPPORT
1.117 -# || errno == EAFNOSUPPORT)
1.118 -# ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.119 -# }
1.120 -#
1.121 -#- return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME);
1.122 -#+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME);
1.123 -#+ free (net_buffer);
1.124 -#+ return status;
1.125 -# }
1.126 -#
1.127 -#
1.128 -#@@ -140,7 +152,7 @@ _nss_dns_getnetbyaddr_r (long net, int t
1.129 -# {
1.130 -# /* Return entry for network with NAME. */
1.131 -# enum nss_status status;
1.132 -#- querybuf net_buffer;
1.133 -#+ querybuf *net_buffer;
1.134 -# unsigned int net_bytes[4];
1.135 -# char qbuf[MAXDNAME];
1.136 -# int cnt, anslen;
1.137 -#@@ -176,19 +188,28 @@ _nss_dns_getnetbyaddr_r (long net, int t
1.138 -# break;
1.139 -# }
1.140 -#
1.141 -#- anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
1.142 -#- sizeof (querybuf));
1.143 -#+ net_buffer = (querybuf *) malloc (sizeof (*net_buffer));
1.144 -#+ if (net_buffer == NULL)
1.145 -#+ {
1.146 -#+ *errnop = ENOMEM;
1.147 -#+ return NSS_STATUS_UNAVAIL;
1.148 -#+ }
1.149 -#+
1.150 -#+ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf,
1.151 -#+ sizeof (net_buffer->buf));
1.152 -# if (anslen < 0)
1.153 -# {
1.154 -# /* Nothing found. */
1.155 -# *errnop = errno;
1.156 -#+ free (net_buffer);
1.157 -# return (errno == ECONNREFUSED
1.158 -# || errno == EPFNOSUPPORT
1.159 -# || errno == EAFNOSUPPORT)
1.160 -# ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.161 -# }
1.162 -#
1.163 -#- status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR);
1.164 -#+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR);
1.165 -#+ free (net_buffer);
1.166 -# if (status == NSS_STATUS_SUCCESS)
1.167 -# {
1.168 -# /* Strip trailing zeros. */
1.169 -#--- libc/resolv/res_query.c.jj Wed Jun 30 12:01:06 1999
1.170 -#+++ libc/resolv/res_query.c Thu Oct 10 13:01:12 2002
1.171 -#@@ -106,7 +106,7 @@ res_query(name, class, type, answer, ans
1.172 -# u_char *answer; /* buffer to put answer */
1.173 -# int anslen; /* size of answer buffer */
1.174 -# {
1.175 -#- u_char buf[MAXPACKET];
1.176 -#+ u_char *buf;
1.177 -# register HEADER *hp = (HEADER *) answer;
1.178 -# int n;
1.179 -#
1.180 -#@@ -121,17 +121,25 @@ res_query(name, class, type, answer, ans
1.181 -# printf(";; res_query(%s, %d, %d)\n", name, class, type);
1.182 -# #endif
1.183 -#
1.184 -#+ buf = malloc (MAXPACKET);
1.185 -#+ if (buf == NULL) {
1.186 -#+ __set_h_errno (NETDB_INTERNAL);
1.187 -#+ return -1;
1.188 -#+ }
1.189 -#+
1.190 -# n = res_mkquery(QUERY, name, class, type, NULL, 0, NULL,
1.191 -#- buf, sizeof(buf));
1.192 -#+ buf, MAXPACKET);
1.193 -# if (n <= 0) {
1.194 -# #ifdef DEBUG
1.195 -# if (_res.options & RES_DEBUG)
1.196 -# printf(";; res_query: mkquery failed\n");
1.197 -# #endif
1.198 -# __set_h_errno (NO_RECOVERY);
1.199 -#+ free (buf);
1.200 -# return (n);
1.201 -# }
1.202 -# n = res_send(buf, n, answer, anslen);
1.203 -#+ free (buf);
1.204 -# if (n < 0) {
1.205 -# #ifdef DEBUG
1.206 -# if (_res.options & RES_DEBUG)
1.207 -#--- libc/resolv/gethnamaddr.c.jj Tue Dec 7 11:50:36 1999
1.208 -#+++ libc/resolv/gethnamaddr.c Thu Oct 10 15:05:50 2002
1.209 -#@@ -512,10 +512,11 @@ gethostbyname2(name, af)
1.210 -# const char *name;
1.211 -# int af;
1.212 -# {
1.213 -#- querybuf buf;
1.214 -#+ querybuf *buf;
1.215 -# register const char *cp;
1.216 -# char *bp;
1.217 -# int n, size, type, len;
1.218 -#+ struct hostent *ret;
1.219 -# extern struct hostent *_gethtbyname2();
1.220 -#
1.221 -# if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
1.222 -#@@ -617,13 +618,22 @@ gethostbyname2(name, af)
1.223 -# break;
1.224 -# }
1.225 -#
1.226 -#- if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf.buf))) < 0) {
1.227 -#+ buf = (querybuf *) malloc (sizeof (*buf));
1.228 -#+ if (buf == NULL) {
1.229 -#+ __set_h_errno (NETDB_INTERNAL);
1.230 -#+ return NULL;
1.231 -#+ }
1.232 -#+
1.233 -#+ if ((n = res_search(name, C_IN, type, buf->buf, sizeof(buf->buf))) < 0) {
1.234 -#+ free (buf);
1.235 -# dprintf("res_search failed (%d)\n", n);
1.236 -# if (errno == ECONNREFUSED)
1.237 -# return (_gethtbyname2(name, af));
1.238 -# return (NULL);
1.239 -# }
1.240 -#- return (getanswer(&buf, n, name, type));
1.241 -#+ ret = getanswer(buf, n, name, type);
1.242 -#+ free (buf);
1.243 -#+ return ret;
1.244 -# }
1.245 -#
1.246 -# struct hostent *
1.247 -#@@ -636,7 +646,7 @@ gethostbyaddr(addr, len, af)
1.248 -# static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff };
1.249 -# static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
1.250 -# int n, size;
1.251 -#- querybuf buf;
1.252 -#+ querybuf *buf;
1.253 -# register struct hostent *hp;
1.254 -# char qbuf[MAXDNAME+1], *qp;
1.255 -# #ifdef SUNSECURITY
1.256 -#@@ -697,14 +707,24 @@ gethostbyaddr(addr, len, af)
1.257 -# default:
1.258 -# abort();
1.259 -# }
1.260 -#- n = res_query(qbuf, C_IN, T_PTR, (u_char *)buf.buf, sizeof buf.buf);
1.261 -#+
1.262 -#+ buf = (querybuf *) malloc (sizeof (*buf));
1.263 -#+ if (buf == NULL) {
1.264 -#+ __set_h_errno (NETDB_INTERNAL);
1.265 -#+ return NULL;
1.266 -#+ }
1.267 -#+
1.268 -#+ n = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof buf->buf);
1.269 -# if (n < 0) {
1.270 -#+ free (buf);
1.271 -# dprintf("res_query failed (%d)\n", n);
1.272 -# if (errno == ECONNREFUSED)
1.273 -# return (_gethtbyaddr(addr, len, af));
1.274 -# return (NULL);
1.275 -# }
1.276 -#- if (!(hp = getanswer(&buf, n, qbuf, T_PTR)))
1.277 -#+ hp = getanswer(buf, n, qbuf, T_PTR);
1.278 -#+ free (buf);
1.279 -#+ if (!hp)
1.280 -# return (NULL); /* h_errno was set by getanswer() */
1.281 -# #ifdef SUNSECURITY
1.282 -# if (af == AF_INET) {
1.283 -#--- libc/resolv/getnetnamadr.c.jj Wed Jun 30 12:00:50 1999
1.284 -#+++ libc/resolv/getnetnamadr.c Thu Oct 10 13:14:01 2002
1.285 -#@@ -210,7 +210,7 @@ getnetbyaddr(net, net_type)
1.286 -# {
1.287 -# unsigned int netbr[4];
1.288 -# int nn, anslen;
1.289 -#- querybuf buf;
1.290 -#+ querybuf *buf;
1.291 -# char qbuf[MAXDNAME];
1.292 -# u_int32_t net2; /* Changed from unsigned long --roland */
1.293 -# struct netent *net_entry;
1.294 -#@@ -236,8 +236,15 @@ getnetbyaddr(net, net_type)
1.295 -# netbr[1], netbr[0]);
1.296 -# break;
1.297 -# }
1.298 -#- anslen = res_query(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf));
1.299 -#+
1.300 -#+ buf = (querybuf *) malloc (sizeof (*buf));
1.301 -#+ if (buf == NULL) {
1.302 -#+ return NULL;
1.303 -#+ }
1.304 -#+
1.305 -#+ anslen = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
1.306 -# if (anslen < 0) {
1.307 -#+ free (buf);
1.308 -# #ifdef DEBUG
1.309 -# if (_res.options & RES_DEBUG)
1.310 -# printf("res_query failed\n");
1.311 -#@@ -246,7 +253,8 @@ getnetbyaddr(net, net_type)
1.312 -# return (_getnetbyaddr(net, net_type));
1.313 -# return (NULL);
1.314 -# }
1.315 -#- net_entry = getnetanswer(&buf, anslen, BYADDR);
1.316 -#+ net_entry = getnetanswer(buf, anslen, BYADDR);
1.317 -#+ free (buf);
1.318 -# if (net_entry) {
1.319 -# unsigned u_net = net; /* maybe net should be unsigned ? */
1.320 -#
1.321 -#@@ -264,7 +272,7 @@ getnetbyname(net)
1.322 -# register const char *net;
1.323 -# {
1.324 -# int anslen;
1.325 -#- querybuf buf;
1.326 -#+ querybuf *buf;
1.327 -# char qbuf[MAXDNAME];
1.328 -# struct netent *net_entry;
1.329 -#
1.330 -#@@ -273,8 +281,13 @@ getnetbyname(net)
1.331 -# return (NULL);
1.332 -# }
1.333 -# strcpy(&qbuf[0], net);
1.334 -#- anslen = res_search(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf));
1.335 -#+ buf = (querybuf *) malloc (sizeof (*buf));
1.336 -#+ if (buf == NULL) {
1.337 -#+ return NULL;
1.338 -#+ }
1.339 -#+ anslen = res_search(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));
1.340 -# if (anslen < 0) {
1.341 -#+ free (buf);
1.342 -# #ifdef DEBUG
1.343 -# if (_res.options & RES_DEBUG)
1.344 -# printf("res_query failed\n");
1.345 -#@@ -283,7 +296,8 @@ getnetbyname(net)
1.346 -# return (_getnetbyname(net));
1.347 -# return (_getnetbyname(net));
1.348 -# }
1.349 -#- net_entry = getnetanswer(&buf, anslen, BYNAME);
1.350 -#+ net_entry = getnetanswer(buf, anslen, BYNAME);
1.351 -#+ free (buf);
1.352 -# if (net_entry)
1.353 -# return (net_entry);
1.354 -# return (_getnetbyname(net));
1.355 ---- libc/glibc-compat/nss_dns/dns-host.c.jj Mon Jan 3 20:07:08 2000
1.356 -+++ libc/glibc-compat/nss_dns/dns-host.c Thu Oct 10 12:46:24 2002
1.357 -@@ -126,9 +126,10 @@ enum nss_status
1.358 - _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result,
1.359 - char *buffer, size_t buflen, int *h_errnop)
1.360 - {
1.361 -- querybuf host_buffer;
1.362 -+ querybuf *host_buffer;
1.363 - int size, type, n;
1.364 - const char *cp;
1.365 -+ enum nss_status status;
1.366 -
1.367 - switch (af) {
1.368 - case AF_INET:
1.369 -@@ -156,15 +157,22 @@ _nss_dns_gethostbyname2_r (const char *n
1.370 - if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL)
1.371 - name = cp;
1.372 -
1.373 -- n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf));
1.374 -+ host_buffer = (querybuf *) malloc (sizeof (querybuf));
1.375 -+ if (host_buffer == NULL)
1.376 -+ return NSS_STATUS_UNAVAIL;
1.377 -+
1.378 -+ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf));
1.379 - if (n < 0)
1.380 - {
1.381 - *h_errnop = h_errno;
1.382 -+ free (host_buffer);
1.383 - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.384 - }
1.385 -
1.386 -- return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen,
1.387 -- h_errnop);
1.388 -+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen,
1.389 -+ h_errnop);
1.390 -+ free (host_buffer);
1.391 -+ return status;
1.392 - }
1.393 -
1.394 -
1.395 -@@ -200,7 +208,7 @@ _nss_dns_gethostbyaddr_r (const char *ad
1.396 - char *h_addr_ptrs[MAX_NR_ADDRS + 1];
1.397 - char linebuffer[0];
1.398 - } *host_data = (struct host_data *) buffer;
1.399 -- querybuf host_buffer;
1.400 -+ querybuf *host_buffer;
1.401 - char qbuf[MAXDNAME+1], *qp;
1.402 - int size, n, status;
1.403 -
1.404 -@@ -251,16 +259,22 @@ _nss_dns_gethostbyaddr_r (const char *ad
1.405 - /* Cannot happen. */
1.406 - }
1.407 -
1.408 -- n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf,
1.409 -- sizeof host_buffer);
1.410 -+ host_buffer = (querybuf *) malloc (sizeof (querybuf));
1.411 -+ if (host_buffer == NULL)
1.412 -+ return NSS_STATUS_UNAVAIL;
1.413 -+
1.414 -+ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf,
1.415 -+ sizeof (host_buffer->buf));
1.416 - if (n < 0)
1.417 - {
1.418 - *h_errnop = h_errno;
1.419 -+ free (host_buffer);
1.420 - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.421 - }
1.422 -
1.423 -- status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
1.424 -+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen,
1.425 - h_errnop);
1.426 -+ free (host_buffer);
1.427 - if (status != NSS_STATUS_SUCCESS)
1.428 - {
1.429 - *h_errnop = h_errno;
1.430 ---- libc/glibc-compat/nss_dns/dns-network.c.jj Mon Jan 3 20:07:08 2000
1.431 -+++ libc/glibc-compat/nss_dns/dns-network.c Thu Oct 10 12:46:24 2002
1.432 -@@ -107,21 +107,32 @@ _nss_dns_getnetbyname_r (const char *nam
1.433 - char *buffer, size_t buflen)
1.434 - {
1.435 - /* Return entry for network with NAME. */
1.436 -- querybuf net_buffer;
1.437 -+ querybuf *net_buffer;
1.438 - int anslen;
1.439 - char *qbuf;
1.440 -+ enum nss_status status;
1.441 -
1.442 - qbuf = strdupa (name);
1.443 -- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
1.444 -- sizeof (querybuf));
1.445 -+
1.446 -+ net_buffer = (querybuf *) malloc (sizeof (querybuf));
1.447 -+ if (net_buffer == NULL)
1.448 -+ return NSS_STATUS_UNAVAIL;
1.449 -+
1.450 -+ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf,
1.451 -+ sizeof (net_buffer->buf));
1.452 - if (anslen < 0)
1.453 -- /* Nothing found. */
1.454 -- return (errno == ECONNREFUSED
1.455 -- || errno == EPFNOSUPPORT
1.456 -- || errno == EAFNOSUPPORT)
1.457 -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.458 -+ {
1.459 -+ free (net_buffer);
1.460 -+ /* Nothing found. */
1.461 -+ return (errno == ECONNREFUSED
1.462 -+ || errno == EPFNOSUPPORT
1.463 -+ || errno == EAFNOSUPPORT)
1.464 -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.465 -+ }
1.466 -
1.467 -- return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME);
1.468 -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME);
1.469 -+ free (net_buffer);
1.470 -+ return status;
1.471 - }
1.472 -
1.473 -
1.474 -@@ -131,7 +142,7 @@ _nss_dns_getnetbyaddr_r (long net, int t
1.475 - {
1.476 - /* Return entry for network with NAME. */
1.477 - enum nss_status status;
1.478 -- querybuf net_buffer;
1.479 -+ querybuf *net_buffer;
1.480 - unsigned int net_bytes[4];
1.481 - char qbuf[MAXDNAME];
1.482 - int cnt, anslen;
1.483 -@@ -167,16 +178,24 @@ _nss_dns_getnetbyaddr_r (long net, int t
1.484 - break;
1.485 - }
1.486 -
1.487 -- anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,
1.488 -- sizeof (querybuf));
1.489 -+ net_buffer = (querybuf *) malloc (sizeof (querybuf));
1.490 -+ if (net_buffer == NULL)
1.491 -+ return NSS_STATUS_UNAVAIL;
1.492 -+
1.493 -+ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf,
1.494 -+ sizeof (net_buffer->buf));
1.495 - if (anslen < 0)
1.496 -- /* Nothing found. */
1.497 -- return (errno == ECONNREFUSED
1.498 -- || errno == EPFNOSUPPORT
1.499 -- || errno == EAFNOSUPPORT)
1.500 -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.501 -+ {
1.502 -+ free (net_buffer);
1.503 -+ /* Nothing found. */
1.504 -+ return (errno == ECONNREFUSED
1.505 -+ || errno == EPFNOSUPPORT
1.506 -+ || errno == EAFNOSUPPORT)
1.507 -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;
1.508 -+ }
1.509 -
1.510 -- status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR);
1.511 -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR);
1.512 -+ free (net_buffer);
1.513 - if (status == NSS_STATUS_SUCCESS)
1.514 - {
1.515 - /* Strip trailing zeros. */