diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-02-16 17:42:46 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-02-16 17:42:46 +0000 |
commit | 880f421fc30003d1626429e8796d43b91d71cab9 (patch) | |
tree | dd3aff8b9397dd9177ed24a32d4e6fd2f841ebdd /nis | |
parent | f565518e7e393419f99457792971ce71215d02cc (diff) | |
download | glibc-880f421fc30003d1626429e8796d43b91d71cab9.tar.gz |
Update.
1998-02-16 17:33 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (dl_main): Recognize --library-path parameter and
pass value (or NULL) to _dl_init_paths.
* elf/dl-load.c (_dl_init_paths): Change to take one parameter,
replacing local variable llp. If llp is NULL examine LD_LIBRARY_PATH
environment variable.
* elf/link.h: Change prototype for _dl_init_paths.
* elf/dl-support.c: Pass NULL in _dl_init_paths call.
* localedata/Makefile (distribute): Add test files.
1998-02-17 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* localedata/tests/{test1.cm, test2.cm, test3.cm, test4.cm,
test1.def, test2.def, test3.def, test4.def}: Simple input files
for localedef. Contributed by Yung-Ching Hsiao
<yhsiao@cae.wisc.edu>.
* localedata/Makefile (tests): Call tst-locale.sh.
* localedata/tst-locale.sh: New file, regression tests for some
localedef problems.
1998-02-15 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* nis/nss_nisplus/nisplus-alias.c: Use __stpncpy.
* nis/nss_nisplus/nisplus-hosts.c: Make sure buffer is always NUL
terminated.
* nis/nss_nisplus/nisplus-network.c: Likewise.
* nis/nss_nisplus/nisplus-proto.c: Likewise.
* nis/nss_nisplus/nisplus-rpc.c: Likewise.
* nis/nss_nisplus/nisplus-service.c: Likewise.
Add more changes from TI-RPC 2.3 for rpcgen to fix include/C++ bug
and support generating thread safe RPC code.
* sunrpc/rpc_main.c: Add changes.
* sunrpc/rpc_clntout.c: Likewise.
* sunrpc/rpc_cout.c: Likewise.
* sunrpc/rpc_hout.c: Likewise.
* sunrpc/rpc_parse.c: Likewise.
* sunrpc/rpc_sample.c: Likewise.
* sunrpc/rpc_scan.c: Likewise.
* sunrpc/rpc_svcout.c: Likewise.
* sunrpc/rpc_util.c: Likewise.
* sunrpc/rpc_util.h: Add new structs and prototypes.
* sunrpc/proto.h: Remove prototypes for static functions.
1998-02-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/programs/ld-messages.c (messages_finish): Don't skip
error checking when being quiet.
* locale/programs/ld-ctype.c (ctype_finish): Likewise.
(set_class_defaults): Likewise.
* locale/programs/charmap.c (parse_charmap): Likewise.
* locale/programs/ld-collate.c (collate_finish): Likewise.
* locale/programs/ld-monetary.c (monetary_finish): Likewise.
* locale/programs/ld-time.c (time_finish): Likewise.
* locale/programs/locfile.c (write_locale_data): Likewise.
* locale/programs/ld-ctype.c (ctype_class_to): Silently ignore
unknown characters and empty ranges.
* locale/programs/ld-collate.c (collate_order_elem): When
processing an ellipsis properly form a linked list in the result
table, fix typo when allocating ordering array.
[PR libc/419]
1998-02-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/Makefile (ld-map): Define.
(rtld-ldscript): Define. Change all `$(objpfx)rtld-ldscript' to
`$(rtld-ldscript)'.
($(objpfx)ld.so): Combine the two versions of this rule. Depend
on $(ld-map).
(rtld-link): Combine the two versions of this definition. Fixed
to make it work when no symbol versioning is used.
1998-02-16 Ulrich Drepper <drepper@cygnus.com>
* Makeconfig (build-program-cmd): Use --library-path parameter to
ld.so instead of environment variable.
* sunrpc/Makefile (rpcgen-cmd): Don't use -$ parameter.
* sunrpc/rpc_main.c: Remove support for -$$ option again.
1998-02-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* Make-dist: Respect with-cvs setting.
* MakeTAGS (all-pot): Likewise.
* sysdeps/sparc/sparc32/Makefile: Likewise.
* sysdeps/mach/hurd/Makefile: Likewise.
* stdlib/Makefile: Likewise.
* posix/Makefile: Likewise.
* intl/Makefile: Likewise.
* po/Makefile (linguas): Likewise
Diffstat (limited to 'nis')
-rw-r--r-- | nis/nss_nisplus/nisplus-alias.c | 13 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-hosts.c | 9 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-network.c | 85 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-proto.c | 6 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-rpc.c | 19 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-service.c | 6 |
6 files changed, 76 insertions, 62 deletions
diff --git a/nis/nss_nisplus/nisplus-alias.c b/nis/nss_nisplus/nisplus-alias.c index 732c02dbfa..a189d282ca 100644 --- a/nis/nss_nisplus/nisplus-alias.c +++ b/nis/nss_nisplus/nisplus-alias.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -93,9 +93,9 @@ _nss_nisplus_parse_aliasent (nis_result *result, unsigned long entry, } else { - strncpy (buffer, NISENTRYVAL (entry, 1, result), - NISENTRYLEN (entry, 1, result)); - buffer[NISENTRYLEN (entry, 1, result)] = '\0'; + cp = __stpncpy (buffer, NISENTRYVAL (entry, 1, result), + NISENTRYLEN (entry, 1, result)); + *cp = '\0'; } if (NISENTRYLEN(entry, 0, result) >= room_left) @@ -105,8 +105,9 @@ _nss_nisplus_parse_aliasent (nis_result *result, unsigned long entry, alias->alias_members_len = 0; *first_unused = '\0'; ++first_unused; - strcpy (first_unused, NISENTRYVAL (entry, 0, result)); - first_unused[NISENTRYLEN (entry, 0, result)] = '\0'; + cp = __stpncpy (first_unused, NISENTRYVAL (entry, 0, result), + NISENTRYLEN (entry, 0, result)); + *cp = '\0'; alias->alias_name = first_unused; /* Terminate the line for any case. */ diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c index 3b022b6df7..375315b2ed 100644 --- a/nis/nss_nisplus/nisplus-hosts.c +++ b/nis/nss_nisplus/nisplus-hosts.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -107,7 +107,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, p = first_unused; line = p; - for (i = 0; i < result->objects.objects_len; i++) + for (i = 0; i < result->objects.objects_len; ++i) { if (strcmp (NISENTRYVAL (i, 1, result), host->h_name) != 0) { @@ -121,8 +121,9 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, room_left -= (NISENTRYLEN (i, 1, result) + 1); } } - ++p; + *p++ = '\0'; first_unused = p; + /* Adjust the pointer so it is aligned for storing pointers. */ first_unused += __alignof__ (char *) - 1; @@ -142,7 +143,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, { /* Skip leading blanks. */ while (isspace (*line)) - line++; + ++line; if (*line == '\0') break; diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c index b39a54fe03..f152c49f11 100644 --- a/nis/nss_nisplus/nisplus-network.c +++ b/nis/nss_nisplus/nisplus-network.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -79,7 +79,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, p = first_unused; line = p; - for (i = 0; i < result->objects.objects_len; i++) + for (i = 0; i < result->objects.objects_len; ++i) { if (strcmp (NISENTRYVAL (i, 1, result), network->n_name) != 0) { @@ -93,7 +93,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, room_left -= (NISENTRYLEN (i, 1, result) + 1); } } - ++p; + *p++ = '\0'; first_unused = p; /* Adjust the pointer so it is aligned for @@ -106,7 +106,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, room_left -= (2 * sizeof (char *)); network->n_aliases[0] = NULL; - i = 0; + i = 0; while (*line != '\0') { /* Skip leading blanks. */ @@ -125,17 +125,14 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, while (*line != '\0' && *line != ' ') ++line; - if (line != network->n_aliases[i]) - { - if (*line != '\0') - { - *line = '\0'; - ++line; - } + if (*line == ' ') + { + *line = '\0'; + ++line; ++i; } else - network->n_aliases[i] = NULL; + network->n_aliases[i+1] = NULL; } return 1; @@ -385,39 +382,57 @@ _nss_nisplus_getnetbyaddr_r (const unsigned long addr, const int type, nis_result *result; char buf[1024 + tablename_len]; struct in_addr in; + char buf2[256]; + int b2len; in = inet_makeaddr (addr, 0); - sprintf (buf, "[addr=%s],%s", inet_ntoa (in), tablename_val); - - result = nis_list (buf, EXPAND_NAME, NULL, NULL); + strcpy (buf2, inet_ntoa (in)); + b2len = strlen (buf2); - retval = niserr2nss (result->status); - if (retval != NSS_STATUS_SUCCESS) + while (1) { - if (retval == NSS_STATUS_TRYAGAIN) + sprintf (buf, "[addr=%s],%s", buf2, tablename_val); + result = nis_list (buf, EXPAND_NAME, NULL, NULL); + + retval = niserr2nss (result->status); + if (retval != NSS_STATUS_SUCCESS) { - *errnop = errno; - *herrnop = NETDB_INTERNAL; + if (buf2[b2len -2] == '.' && buf2[b2len -1] == '0') + { + /* Try again, but with trailing dot(s) + removed (one by one) */ + buf2[b2len - 2] = '\0'; + b2len -= 2; + continue; + } + else + return NSS_STATUS_NOTFOUND; + + if (retval == NSS_STATUS_TRYAGAIN) + { + *errnop = errno; + *herrnop = NETDB_INTERNAL; + } + nis_freeresult (result); + return retval; } - nis_freeresult (result); - return retval; - } - parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen, - errnop); + parse_res = _nss_nisplus_parse_netent (result, network, buffer, + buflen, errnop); - nis_freeresult (result); + nis_freeresult (result); - if (parse_res > 0) - return NSS_STATUS_SUCCESS; + if (parse_res > 0) + return NSS_STATUS_SUCCESS; - *herrnop = NETDB_INTERNAL; - if (parse_res == -1) - { - *errnop = ERANGE; - return NSS_STATUS_TRYAGAIN; + *herrnop = NETDB_INTERNAL; + if (parse_res == -1) + { + *errnop = ERANGE; + return NSS_STATUS_TRYAGAIN; + } + else + return NSS_STATUS_NOTFOUND; } - else - return NSS_STATUS_NOTFOUND; } } diff --git a/nis/nss_nisplus/nisplus-proto.c b/nis/nss_nisplus/nisplus-proto.c index aa2271c385..d121b2f83c 100644 --- a/nis/nss_nisplus/nisplus-proto.c +++ b/nis/nss_nisplus/nisplus-proto.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -79,7 +79,7 @@ _nss_nisplus_parse_protoent (nis_result * result, struct protoent *proto, p = first_unused; line = p; - for (i = 0; i < result->objects.objects_len; i++) + for (i = 0; i < result->objects.objects_len; ++i) { if (strcmp (NISENTRYVAL (i, 1, result), proto->p_name) != 0) { @@ -92,7 +92,7 @@ _nss_nisplus_parse_protoent (nis_result * result, struct protoent *proto, room_left -= (NISENTRYLEN (i, 1, result) + 1); } } - ++p; + *p++ = '\0'; first_unused = p; /* Adjust the pointer so it is aligned for diff --git a/nis/nss_nisplus/nisplus-rpc.c b/nis/nss_nisplus/nisplus-rpc.c index 105e80241b..9dc412e581 100644 --- a/nis/nss_nisplus/nisplus-rpc.c +++ b/nis/nss_nisplus/nisplus-rpc.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -69,13 +69,13 @@ _nss_nisplus_parse_rpcent (nis_result *result, struct rpcent *rpc, NISENTRYLEN (0, 0, result)); first_unused[NISENTRYLEN (0, 0, result)] = '\0'; rpc->r_name = first_unused; - room_left -= strlen (first_unused) + 1; + room_left -= (strlen (first_unused) + 1); first_unused += strlen (first_unused) + 1; rpc->r_number = atoi (NISENTRYVAL (0, 2, result)); p = first_unused; line = p; - for (i = 0; i < result->objects.objects_len; i++) + for (i = 0; i < result->objects.objects_len; ++i) { if (strcmp (NISENTRYVAL (i, 1, result), rpc->r_name) != 0) { @@ -106,7 +106,7 @@ _nss_nisplus_parse_rpcent (nis_result *result, struct rpcent *rpc, { /* Skip leading blanks. */ while (isspace (*line)) - line++; + ++line; if (*line == '\0') break; @@ -120,17 +120,14 @@ _nss_nisplus_parse_rpcent (nis_result *result, struct rpcent *rpc, while (*line != '\0' && *line != ' ') ++line; - if (line != rpc->r_aliases[i]) + if (*line == ' ') { - if (*line != '\0') - { - *line = '\0'; - ++line; - } + *line = '\0'; + ++line; ++i; } else - rpc->r_aliases[i] = NULL; + rpc->r_aliases[i+1] = NULL; } return 1; diff --git a/nis/nss_nisplus/nisplus-service.c b/nis/nss_nisplus/nisplus-service.c index 8f681d3e1c..04fed59808 100644 --- a/nis/nss_nisplus/nisplus-service.c +++ b/nis/nss_nisplus/nisplus-service.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997. @@ -84,7 +84,7 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv, p = first_unused; line = p; - for (i = 0; i < result->objects.objects_len; i++) + for (i = 0; i < result->objects.objects_len; ++i) { if (strcmp (NISENTRYVAL (i, 1, result), serv->s_name) != 0) { @@ -97,7 +97,7 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv, room_left -= (NISENTRYLEN (i, 1, result) + 1); } } - ++p; + *p++ = '\0'; first_unused = p; /* Adjust the pointer so it is aligned for |