From: Jakub Jelinek Date: Fri, 12 Jan 2007 14:57:15 +0000 (+0000) Subject: * nis/nis_subr.c (nis_getnames): Add trailing dot to NIS_PATH X-Git-Tag: cvs/fedora-glibc-2_5-20070712T1701~110 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1c129764c30a1294a991a1832e80e862ce9a4aa;p=thirdparty%2Fglibc.git * nis/nis_subr.c (nis_getnames): Add trailing dot to NIS_PATH components which lack them. * nis/nis_subr.c (nis_getnames): Make sure that we always return at least one entry consisting of the parameter concatenated with the domain. --- diff --git a/ChangeLog b/ChangeLog index bb4739b5596..74fbf482d56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-10-10 Ulrich Drepper + + * nis/nis_subr.c (nis_getnames): Add trailing dot to NIS_PATH + components which lack them. + + * nis/nis_subr.c (nis_getnames): Make sure that we always return + at least one entry consisting of the parameter concatenated with + the domain. + 2006-10-09 Jakub Jelinek * elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0 diff --git a/nis/nis_subr.c b/nis/nis_subr.c index 40c92705012..c68189e541b 100644 --- a/nis/nis_subr.c +++ b/nis/nis_subr.c @@ -251,13 +251,16 @@ nis_getnames (const_nis_name name) { char *p; - tmp = malloc (cplen + name_len + 2); + tmp = malloc (cplen + name_len + 3); if (__builtin_expect (tmp == NULL, 0)) goto free_null; - p = __stpcpy (tmp, name); + p = __mempcpy (tmp, name, name_len); *p++ = '.'; - memcpy (p, cp, cplen + 1); + p = __mempcpy (p, cp, cplen); + if (p[-1] != '.') + *p++ = '.'; + *p = '\0'; } if (pos >= count) @@ -275,6 +278,13 @@ nis_getnames (const_nis_name name) cp = __strtok_r (NULL, ":", &saveptr); } + if (pos == 0 + && __asprintf (&getnames[pos++], "%s%s%s%s", + name, name[name_len - 1] == '.' ? "" : ".", + local_domain, + local_domain[local_domain_len - 1] == '.' ? "" : ".") < 0) + goto free_null; + getnames[pos] = NULL; return getnames;