mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
1997-05-29 12:48 Ulrich Drepper <drepper@cygnus.com> * io/ftw.c: Complete rewrite. Add implementation of `nftw'. * io/ftw.h: Update for new implementation and XPG4.2. * login/Makefile: Update for UTMP daemon implementation. Update resolver code to bind-4.9.6-T1A. * resolv/Banner: Update. * nss/digits_dots.c: Adapt text address matching to T1A. * nss/nss_files/files-hosts.c: Always use inet_pton. * resolv/base64.c (b64_pton): Follow T1A but don't use this code since it would lead to warnings. * resolv/gethnamaddr.c (getanswer): Test host name for maximal length at several places. * resolv/inet_net_pton.c (inet_net_pton_ipv4): Correct typo in comment. * resolv/res_comp.c (dn_expand): Check for overflow. (dn_comp): Likewise. * resolv/res_debug.c (precsize_aton): Better implementation. * resolv/res_init.c (res_init): Make `buf' of size MAXDNAME. * resolv/res_send.c (res_send): Check for overflow in descriptor set. * resolv/nss_dns/dns-host.c (getanswer_r): Test host name for maximal length at several places. 1997-05-29 12:51 Mark Kettenis <kettenis@phys.uva.nl> * login/utmp-private.h (struct utfuncs): Add one more parameter to updwtmp function. Declare all three function jump tables. * login/utmp.h: Declare __utmpname. * login/getutent_r.c: Remove db backend and provide support for utmpd backend. * login/login.c: Use `updwtmp' function insteead of writing the record ourself. * login/logwtmp.c: Move `updwtmp' function to... * login/updwtmp.c: ...here. New file. * login/utmp_db.h: Removed. * login/utmp_file.c: Add updwtmp function to write to file. * login/utmp_daemon.c: New file. Daemon backend. * login/utmpname.c: New file. Implementation of utmpname function. * login/utmpdump.c: New file. Tool to dump utmp-like files. * login/utmpd/connection.c: New file. * login/utmpd/database.c: New file. * login/utmpd/error.c: New file. * login/utmpd/request.c: New file. * login/utmpd/utmpd-private.h: New file. * login/utmpd/utmpd.c: New file. * login/utmpd/utmpd.h: New file. * login/utmpd/xtmp.c: New file. * login/utmpd/xtmp.h: New file. 1997-05-29 12:28 Jim Meyering <meyering@eng.ascend.com> * time/strftime.c: Correct/normalize indentation in cpp directives. 1997-05-28 20:43 Philip Blundell <pjb27@cam.ac.uk> * nis/nis_error.c: Include <string.h> to fix warning. * nis/nis_print.c: Likewise. * nis/nss_nisplus/nisplus-hosts.c: Arg 3 of map_v4v6_hostent is int* not size_t*. 1997-05-28 21:56 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/cmathcalls.h: Correct typo in comment. * inet/netinet/icmp6.h: Include <netinet/in.h> for in6_addr. * sysdeps/unix/sysv/linux/netinet/ip_fw.h: Include <net/if.h> for IFNAMSIZ. * sysdeps/unix/sysv/linux/net/ppp_defs.h: Include <time.h> for time_t. * login/pty.h: Include <ioctl-types.h> for definition of struct winsize. * misc/regexp.h (compile): Correct typo. * argp/argp.h: Put extern before __const in defintion of argp_program_bug_address. 1997-05-29 00:20 Ulrich Drepper <drepper@cygnus.com> * sysdeps/wordsize-32/inttypes.h: Correct names of unsigned fast and least types. Correct names of ?INT_FAST*_{MIN,MAX} macros. * sysdeps/wordsize-64/inttypes.h: Likewise. Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>. 1997-05-28 22:51 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/Makefile (make-ioctls-CFLAGS): Use generic ttydefaults.h file instead of non-existing version in termios/sys. Reported by Zack Weinberg <zack@rabi.phys.columbia.edu>. * time/strptime.c (strptime_internal, case 'Y'): Restrict year number to four digits and to representable range for 4 byte time_t values. Patch by H.J. Lu <hjl@lucon.org>. 1997-05-28 18:19 Philip Blundell <pjb27@cam.ac.uk> * posix/execl.c: Include <alloca.h> to avoid warning. 1997-05-27 18:19 Andreas Jaeger <aj@arthur.rhein-neckar.de> * math/libm-test.c: Implement testing of inlined functions, make output nicer, update comments. * math/test-idouble.c: New file. Frontend for double tests of inlined functions. * math/test-ildoubl.c: New file. Frontend for long double tests of inlined functions. * math/test-ifloat.c: New file. Frontend for float tests of inlined functions. * math/test-longdouble.c: Rename to... * math/test-ldouble.c: ...this. * math/Makefile: Add rules for new test programs, change rules for renaming of longdouble test. 1997-05-20 15:50 H.J. Lu <hjl@gnu.ai.mit.edu> * sunrpc/rpc/svc.h (__dispatch_fn_t): New. (svc_register): Use __dispatch_fn_t in prototype. 1997-05-28 17:02 Ulrich Drepper <drepper@cygnus.com> * sysdeps/generic/bzero.c (bzero): Fix typo. Patch by Witek Wnuk <spider@pest.waw.ids.edu.pl>. 1997-05-27 12:00 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/generic/vtimes.c: Use ISO C declaration style. * sysdeps/unix/bsd/ualarm.c: Include <unistd.h> for prototype. * sysdeps/generic/memccpy.c: Include <string.h> for prototype. * signal/tst-signal.c (handler): Correct function declaration to avoid warning. * stdlib/testsort.c (compare): Likewise. * string/tester.c: Likewise. 1997-05-27 14:16 Miles Bader <miles@gnu.ai.mit.edu> * argp-help.c (argp_args_usage): Supply correct argp to filter_doc. 1997-05-27 17:51 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * db/hash/extern.h, db/hash/hash.c, db/hash/hash.h, db/hash/hash_log2.c: Rename __log2 to __hash_log2 to avoid clash with libm. 1997-05-27 14:47 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/e_atan2.c: Fix missing negate. Use __m81_test instead of explicit comparisons. 1997-05-26 18:36 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * inet/netinet/icmp6.h: Remove use of <asm/bitops.h> which has no place in a generic header and is no user include file.
This commit is contained in:
@ -1 +1 @@
|
||||
BIND-4.9.5-P1
|
||||
BIND-4.9.6-T1A
|
||||
|
@ -281,7 +281,12 @@ b64_pton(src, target, targsize)
|
||||
|
||||
case 2: /* Valid, means one byte of info */
|
||||
/* Skip any number of spaces. */
|
||||
#ifdef _LIBC
|
||||
/* To avoid warnings. */
|
||||
for ( ; ch != '\0'; ch = *src++)
|
||||
#else
|
||||
for (NULL; ch != '\0'; ch = *src++)
|
||||
#endif
|
||||
if (!isspace(ch))
|
||||
break;
|
||||
/* Make sure there is another trailing = sign. */
|
||||
@ -296,7 +301,12 @@ b64_pton(src, target, targsize)
|
||||
* We know this char is an =. Is there anything but
|
||||
* whitespace after it?
|
||||
*/
|
||||
#ifdef _LIBC
|
||||
/* To avoid warnings. */
|
||||
for ( ; ch != '\0'; ch = *src++)
|
||||
#else
|
||||
for (NULL; ch != '\0'; ch = *src++)
|
||||
#endif
|
||||
if (!isspace(ch))
|
||||
return (-1);
|
||||
|
||||
|
@ -212,6 +212,10 @@ getanswer(answer, anslen, qname, qtype)
|
||||
* (i.e., with the succeeding search-domain tacked on).
|
||||
*/
|
||||
n = strlen(bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN) {
|
||||
__set_h_errno (NO_RECOVERY);
|
||||
return (NULL);
|
||||
}
|
||||
host.h_name = bp;
|
||||
bp += n;
|
||||
buflen -= n;
|
||||
@ -256,11 +260,15 @@ getanswer(answer, anslen, qname, qtype)
|
||||
/* Store alias. */
|
||||
*ap++ = bp;
|
||||
n = strlen(bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN) {
|
||||
had_error++;
|
||||
continue;
|
||||
}
|
||||
bp += n;
|
||||
buflen -= n;
|
||||
/* Get canonical name. */
|
||||
n = strlen(tbuf) + 1; /* for the \0 */
|
||||
if (n > buflen) {
|
||||
if (n > buflen || n >= MAXHOSTNAMELEN) {
|
||||
had_error++;
|
||||
continue;
|
||||
}
|
||||
@ -272,14 +280,14 @@ getanswer(answer, anslen, qname, qtype)
|
||||
}
|
||||
if (qtype == T_PTR && type == T_CNAME) {
|
||||
n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
|
||||
if ((n < 0) || !res_hnok(tbuf)) {
|
||||
if (n < 0 || !res_hnok(tbuf)) {
|
||||
had_error++;
|
||||
continue;
|
||||
}
|
||||
cp += n;
|
||||
/* Get canonical name. */
|
||||
n = strlen(tbuf) + 1; /* for the \0 */
|
||||
if (n > buflen) {
|
||||
if (n > buflen || n >= MAXHOSTNAMELEN) {
|
||||
had_error++;
|
||||
continue;
|
||||
}
|
||||
@ -320,6 +328,10 @@ getanswer(answer, anslen, qname, qtype)
|
||||
n = -1;
|
||||
if (n != -1) {
|
||||
n = strlen(bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN) {
|
||||
had_error++;
|
||||
break;
|
||||
}
|
||||
bp += n;
|
||||
buflen -= n;
|
||||
}
|
||||
@ -328,6 +340,10 @@ getanswer(answer, anslen, qname, qtype)
|
||||
host.h_name = bp;
|
||||
if (_res.options & RES_USE_INET6) {
|
||||
n = strlen(bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN) {
|
||||
had_error++;
|
||||
break;
|
||||
}
|
||||
bp += n;
|
||||
buflen -= n;
|
||||
map_v4v6_hostent(&host, &bp, &buflen);
|
||||
@ -395,8 +411,8 @@ getanswer(answer, anslen, qname, qtype)
|
||||
# endif /*RESOLVSORT*/
|
||||
if (!host.h_name) {
|
||||
n = strlen(qname) + 1; /* for the \0 */
|
||||
if (n > buflen)
|
||||
goto try_again;
|
||||
if (n > buflen || n >= MAXHOSTNAMELEN)
|
||||
goto no_recovery;
|
||||
strcpy(bp, qname);
|
||||
host.h_name = bp;
|
||||
bp += n;
|
||||
@ -407,8 +423,8 @@ getanswer(answer, anslen, qname, qtype)
|
||||
__set_h_errno (NETDB_SUCCESS);
|
||||
return (&host);
|
||||
}
|
||||
try_again:
|
||||
__set_h_errno (TRY_AGAIN);
|
||||
no_recovery:
|
||||
__set_h_errno (NO_RECOVERY);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@ -508,13 +524,12 @@ gethostbyname2(name, af)
|
||||
if (!isdigit(*cp) && *cp != '.')
|
||||
break;
|
||||
}
|
||||
if (isxdigit(name[0]) || name[0] == ':')
|
||||
if ((isxdigit(name[0]) && strchr(name, ':') != NULL) ||
|
||||
name[0] == ':')
|
||||
for (cp = name;; ++cp) {
|
||||
if (!*cp) {
|
||||
if (*--cp == '.')
|
||||
break;
|
||||
if (!strchr(name, ':'))
|
||||
break;
|
||||
/*
|
||||
* All-IPv6-legal, no dot at the end.
|
||||
* Fake up a hostent as if we'd actually
|
||||
@ -719,8 +734,7 @@ _gethtent()
|
||||
if (!(cp = strpbrk(p, " \t")))
|
||||
goto again;
|
||||
*cp++ = '\0';
|
||||
if ((_res.options & RES_USE_INET6) &&
|
||||
inet_pton(AF_INET6, p, host_addr) > 0) {
|
||||
if (inet_pton(AF_INET6, p, host_addr) > 0) {
|
||||
af = AF_INET6;
|
||||
len = IN6ADDRSZ;
|
||||
} else if (inet_pton(AF_INET, p, host_addr) > 0) {
|
||||
@ -757,12 +771,6 @@ _gethtent()
|
||||
*cp++ = '\0';
|
||||
}
|
||||
*q = NULL;
|
||||
if (_res.options & RES_USE_INET6) {
|
||||
char *bp = hostbuf;
|
||||
int buflen = sizeof hostbuf;
|
||||
|
||||
map_v4v6_hostent(&host, &bp, &buflen);
|
||||
}
|
||||
__set_h_errno (NETDB_SUCCESS);
|
||||
return (&host);
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ inet_net_pton_ipv4(src, dst, size)
|
||||
goto emsgsize;
|
||||
}
|
||||
|
||||
/* Fiery death and destruction unless we prefetched EOS. */
|
||||
/* Firey death and destruction unless we prefetched EOS. */
|
||||
if (ch != '\0')
|
||||
goto enoent;
|
||||
|
||||
|
@ -342,6 +342,11 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
* (i.e., with the succeeding search-domain tacked on).
|
||||
*/
|
||||
n = strlen (bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN)
|
||||
{
|
||||
__set_h_errno (NO_RECOVERY);
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
result->h_name = bp;
|
||||
bp += n;
|
||||
linebuflen -= n;
|
||||
@ -396,11 +401,16 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
/* Store alias. */
|
||||
*ap++ = bp;
|
||||
n = strlen (bp) + 1; /* For the \0. */
|
||||
if (n >= MAXHOSTNAMELEN)
|
||||
{
|
||||
++had_error;
|
||||
continue;
|
||||
}
|
||||
bp += n;
|
||||
linebuflen -= n;
|
||||
/* Get canonical name. */
|
||||
n = strlen (tbuf) + 1; /* For the \0. */
|
||||
if ((size_t) n > buflen)
|
||||
if ((size_t) n > buflen || n >= MAXHOSTNAMELEN)
|
||||
{
|
||||
++had_error;
|
||||
continue;
|
||||
@ -423,7 +433,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
cp += n;
|
||||
/* Get canonical name. */
|
||||
n = strlen (tbuf) + 1; /* For the \0. */
|
||||
if ((size_t) n > buflen)
|
||||
if ((size_t) n > buflen || n >= MAXHOSTNAMELEN)
|
||||
{
|
||||
++had_error;
|
||||
continue;
|
||||
@ -469,6 +479,11 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
if (n != -1)
|
||||
{
|
||||
n = strlen (bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN)
|
||||
{
|
||||
++had_error;
|
||||
break;
|
||||
}
|
||||
bp += n;
|
||||
linebuflen -= n;
|
||||
}
|
||||
@ -478,6 +493,11 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
if (_res.options & RES_USE_INET6)
|
||||
{
|
||||
n = strlen (bp) + 1; /* for the \0 */
|
||||
if (n >= MAXHOSTNAMELEN)
|
||||
{
|
||||
++had_error;
|
||||
break;
|
||||
}
|
||||
bp += n;
|
||||
linebuflen -= n;
|
||||
map_v4v6_hostent (result, &bp, &linebuflen);
|
||||
@ -549,8 +569,8 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
if (result->h_name == NULL)
|
||||
{
|
||||
n = strlen (qname) + 1; /* For the \0. */
|
||||
if (n > linebuflen)
|
||||
goto try_again;
|
||||
if (n > linebuflen || n >= MAXHOSTNAMELEN)
|
||||
goto no_recovery;
|
||||
strcpy (bp, qname); /* Cannot overflow. */
|
||||
result->h_name = bp;
|
||||
bp += n;
|
||||
@ -562,7 +582,7 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
*h_errnop = NETDB_SUCCESS;
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
try_again:
|
||||
*h_errnop = TRY_AGAIN;
|
||||
no_recovery:
|
||||
*h_errnop = NO_RECOVERY;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ dn_expand(msg, eomorig, comp_dn, exp_dn, length)
|
||||
register char *dn;
|
||||
register int n, c;
|
||||
char *eom;
|
||||
int len = -1, checked = 0;
|
||||
int len = -1, checked = 0, octets = 0;
|
||||
|
||||
dn = exp_dn;
|
||||
cp = comp_dn;
|
||||
@ -108,6 +108,9 @@ dn_expand(msg, eomorig, comp_dn, exp_dn, length)
|
||||
*/
|
||||
switch (n & INDIR_MASK) {
|
||||
case 0:
|
||||
octets += (n + 1);
|
||||
if (octets > MAXCDNAME)
|
||||
return (-1);
|
||||
if (dn != exp_dn) {
|
||||
if (dn >= eom)
|
||||
return (-1);
|
||||
@ -179,6 +182,8 @@ dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)
|
||||
|
||||
dn = (u_char *)exp_dn;
|
||||
cp = comp_dn;
|
||||
if (length > MAXCDNAME)
|
||||
length = MAXCDNAME;
|
||||
eob = cp + length;
|
||||
lpp = cpp = NULL;
|
||||
if (dnptrs != NULL) {
|
||||
|
@ -1146,40 +1146,47 @@ static u_int8_t
|
||||
precsize_aton(strptr)
|
||||
char **strptr;
|
||||
{
|
||||
unsigned int mval = 0, cmval = 0;
|
||||
u_int8_t retval = 0;
|
||||
register char *cp;
|
||||
register int exponent;
|
||||
register int mantissa;
|
||||
char *cp;
|
||||
int exponent = 0;
|
||||
int mantissa = 0;
|
||||
|
||||
cp = *strptr;
|
||||
while (isdigit(*cp)) {
|
||||
if (mantissa == 0)
|
||||
mantissa = *cp - '0';
|
||||
else
|
||||
exponent++;
|
||||
cp++;
|
||||
}
|
||||
|
||||
while (isdigit(*cp))
|
||||
mval = mval * 10 + (*cp++ - '0');
|
||||
|
||||
if (*cp == '.') { /* centimeters */
|
||||
if (*cp == '.') {
|
||||
cp++;
|
||||
if (isdigit(*cp)) {
|
||||
cmval = (*cp++ - '0') * 10;
|
||||
if (mantissa == 0)
|
||||
mantissa = *cp - '0';
|
||||
else
|
||||
exponent++;
|
||||
cp++;
|
||||
|
||||
if (isdigit(*cp)) {
|
||||
cmval += (*cp++ - '0');
|
||||
if (mantissa == 0)
|
||||
mantissa = *cp - '0';
|
||||
else
|
||||
exponent++;
|
||||
cp++;
|
||||
}
|
||||
else
|
||||
exponent++;
|
||||
}
|
||||
}
|
||||
cmval = (mval * 100) + cmval;
|
||||
|
||||
for (exponent = 0; exponent < 9; exponent++)
|
||||
if (cmval < poweroften[exponent+1])
|
||||
break;
|
||||
|
||||
mantissa = cmval / poweroften[exponent];
|
||||
if (mantissa > 9)
|
||||
mantissa = 9;
|
||||
else
|
||||
exponent += 2;
|
||||
|
||||
if (mantissa == 0)
|
||||
exponent = 0;
|
||||
retval = (mantissa << 4) | exponent;
|
||||
|
||||
*strptr = cp;
|
||||
|
||||
return (retval);
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ res_init()
|
||||
register FILE *fp;
|
||||
register char *cp, **pp;
|
||||
register int n;
|
||||
char buf[BUFSIZ];
|
||||
char buf[MAXDNAME];
|
||||
int nserv = 0; /* number of nameserver records read from file */
|
||||
int haveenv = 0;
|
||||
int havesearch = 0;
|
||||
|
@ -601,6 +601,11 @@ read_len:
|
||||
if ((long) timeout.tv_sec <= 0)
|
||||
timeout.tv_sec = 1;
|
||||
timeout.tv_usec = 0;
|
||||
if (s+1 > FD_SETSIZE) {
|
||||
Perror(stderr, "s+1 > FD_SETSIZE", EMFILE);
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
wait:
|
||||
FD_ZERO(&dsmask);
|
||||
FD_SET(s, &dsmask);
|
||||
|
Reference in New Issue
Block a user