📄 rh62-12-glibc-compat-2.1.3-maxpacket.patch
字号:
#+#+ buf = (querybuf *) malloc (sizeof (*buf));#+ if (buf == NULL) {#+ __set_h_errno (NETDB_INTERNAL);#+ return NULL;#+ }#+#+ n = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof buf->buf);# if (n < 0) {#+ free (buf);# dprintf("res_query failed (%d)\n", n);# if (errno == ECONNREFUSED)# return (_gethtbyaddr(addr, len, af));# return (NULL);# }#- if (!(hp = getanswer(&buf, n, qbuf, T_PTR)))#+ hp = getanswer(buf, n, qbuf, T_PTR);#+ free (buf);#+ if (!hp)# return (NULL); /* h_errno was set by getanswer() */# #ifdef SUNSECURITY# if (af == AF_INET) {#--- libc/resolv/getnetnamadr.c.jj Wed Jun 30 12:00:50 1999#+++ libc/resolv/getnetnamadr.c Thu Oct 10 13:14:01 2002#@@ -210,7 +210,7 @@ getnetbyaddr(net, net_type)# {# unsigned int netbr[4];# int nn, anslen;#- querybuf buf;#+ querybuf *buf;# char qbuf[MAXDNAME];# u_int32_t net2; /* Changed from unsigned long --roland */# struct netent *net_entry;#@@ -236,8 +236,15 @@ getnetbyaddr(net, net_type)# netbr[1], netbr[0]);# break;# }#- anslen = res_query(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf));#+#+ buf = (querybuf *) malloc (sizeof (*buf));#+ if (buf == NULL) {#+ return NULL;#+ }#+#+ anslen = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));# if (anslen < 0) {#+ free (buf);# #ifdef DEBUG# if (_res.options & RES_DEBUG)# printf("res_query failed\n");#@@ -246,7 +253,8 @@ getnetbyaddr(net, net_type)# return (_getnetbyaddr(net, net_type));# return (NULL);# }#- net_entry = getnetanswer(&buf, anslen, BYADDR);#+ net_entry = getnetanswer(buf, anslen, BYADDR);#+ free (buf);# if (net_entry) {# unsigned u_net = net; /* maybe net should be unsigned ? */# #@@ -264,7 +272,7 @@ getnetbyname(net)# register const char *net;# {# int anslen;#- querybuf buf;#+ querybuf *buf;# char qbuf[MAXDNAME];# struct netent *net_entry;# #@@ -273,8 +281,13 @@ getnetbyname(net)# return (NULL);# }# strcpy(&qbuf[0], net);#- anslen = res_search(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf));#+ buf = (querybuf *) malloc (sizeof (*buf));#+ if (buf == NULL) {#+ return NULL;#+ }#+ anslen = res_search(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf));# if (anslen < 0) {#+ free (buf);# #ifdef DEBUG# if (_res.options & RES_DEBUG)# printf("res_query failed\n");#@@ -283,7 +296,8 @@ getnetbyname(net)# return (_getnetbyname(net));# return (_getnetbyname(net));# }#- net_entry = getnetanswer(&buf, anslen, BYNAME);#+ net_entry = getnetanswer(buf, anslen, BYNAME);#+ free (buf);# if (net_entry)# return (net_entry);# return (_getnetbyname(net));--- libc/glibc-compat/nss_dns/dns-host.c.jj Mon Jan 3 20:07:08 2000+++ libc/glibc-compat/nss_dns/dns-host.c Thu Oct 10 12:46:24 2002@@ -126,9 +126,10 @@ enum nss_status _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result, char *buffer, size_t buflen, int *h_errnop) {- querybuf host_buffer;+ querybuf *host_buffer; int size, type, n; const char *cp;+ enum nss_status status; switch (af) { case AF_INET:@@ -156,15 +157,22 @@ _nss_dns_gethostbyname2_r (const char *n if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL) name = cp; - n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf));+ host_buffer = (querybuf *) malloc (sizeof (querybuf));+ if (host_buffer == NULL)+ return NSS_STATUS_UNAVAIL;++ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf)); if (n < 0) { *h_errnop = h_errno;+ free (host_buffer); return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; } - return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen,- h_errnop);+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen,+ h_errnop);+ free (host_buffer);+ return status; } @@ -200,7 +208,7 @@ _nss_dns_gethostbyaddr_r (const char *ad char *h_addr_ptrs[MAX_NR_ADDRS + 1]; char linebuffer[0]; } *host_data = (struct host_data *) buffer;- querybuf host_buffer;+ querybuf *host_buffer; char qbuf[MAXDNAME+1], *qp; int size, n, status; @@ -251,16 +259,22 @@ _nss_dns_gethostbyaddr_r (const char *ad /* Cannot happen. */ } - n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf,- sizeof host_buffer);+ host_buffer = (querybuf *) malloc (sizeof (querybuf));+ if (host_buffer == NULL)+ return NSS_STATUS_UNAVAIL;++ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf,+ sizeof (host_buffer->buf)); if (n < 0) { *h_errnop = h_errno;+ free (host_buffer); return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; } - status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen,+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen, h_errnop);+ free (host_buffer); if (status != NSS_STATUS_SUCCESS) { *h_errnop = h_errno;--- libc/glibc-compat/nss_dns/dns-network.c.jj Mon Jan 3 20:07:08 2000+++ libc/glibc-compat/nss_dns/dns-network.c Thu Oct 10 12:46:24 2002@@ -107,21 +107,32 @@ _nss_dns_getnetbyname_r (const char *nam char *buffer, size_t buflen) { /* Return entry for network with NAME. */- querybuf net_buffer;+ querybuf *net_buffer; int anslen; char *qbuf;+ enum nss_status status; qbuf = strdupa (name);- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,- sizeof (querybuf));++ net_buffer = (querybuf *) malloc (sizeof (querybuf));+ if (net_buffer == NULL)+ return NSS_STATUS_UNAVAIL;++ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf,+ sizeof (net_buffer->buf)); if (anslen < 0)- /* Nothing found. */- return (errno == ECONNREFUSED- || errno == EPFNOSUPPORT- || errno == EAFNOSUPPORT)- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;+ {+ free (net_buffer);+ /* Nothing found. */+ return (errno == ECONNREFUSED+ || errno == EPFNOSUPPORT+ || errno == EAFNOSUPPORT)+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;+ } - return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME);+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME);+ free (net_buffer);+ return status; } @@ -131,7 +142,7 @@ _nss_dns_getnetbyaddr_r (long net, int t { /* Return entry for network with NAME. */ enum nss_status status;- querybuf net_buffer;+ querybuf *net_buffer; unsigned int net_bytes[4]; char qbuf[MAXDNAME]; int cnt, anslen;@@ -167,16 +178,24 @@ _nss_dns_getnetbyaddr_r (long net, int t break; } - anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer,- sizeof (querybuf));+ net_buffer = (querybuf *) malloc (sizeof (querybuf));+ if (net_buffer == NULL)+ return NSS_STATUS_UNAVAIL;++ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf,+ sizeof (net_buffer->buf)); if (anslen < 0)- /* Nothing found. */- return (errno == ECONNREFUSED- || errno == EPFNOSUPPORT- || errno == EAFNOSUPPORT)- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;+ {+ free (net_buffer);+ /* Nothing found. */+ return (errno == ECONNREFUSED+ || errno == EPFNOSUPPORT+ || errno == EAFNOSUPPORT)+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND;+ } - status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR);+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR);+ free (net_buffer); if (status == NSS_STATUS_SUCCESS) { /* Strip trailing zeros. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -