]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 30 Jun 1999 17:16:08 +0000 (17:16 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 30 Jun 1999 17:16:08 +0000 (17:16 +0000)
1999-06-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* inet/rcmd.c (__icheckhost): Test for gethostbyname_r result
correctly.

1999-06-25  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* manual/arith.texi (System V Number Conversion): Fix the
description which confused pointer and value to pointer.
Reported by Andries.Brouwer@cwi.nl.

1999-06-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* pwd/getpw.c (__getpw): Check for NULL result pointer.

1999-06-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* manual/users.texi (Lookup User): Document POSIX return
semantics for getpwuid_r and getgrgid_r.

* manual/socket.texi (Host Names): Document that the result
pointer is null in case of error or host not found and fix a
typo.  Give a small example.

ChangeLog
inet/rcmd.c
manual/arith.texi
manual/socket.texi
manual/users.texi
pwd/getpw.c

index 468a2ad81edfd6503b9e30185f488db0a10c0c62..4c4ecd8c408f4c4fae3f650b8f50ffe688828c65 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+1999-06-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * inet/rcmd.c (__icheckhost): Test for gethostbyname_r result
+       correctly.
+
+1999-06-25  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * manual/arith.texi (System V Number Conversion): Fix the
+       description which confused pointer and value to pointer.
+       Reported by Andries.Brouwer@cwi.nl.
+
+1999-06-28  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * pwd/getpw.c (__getpw): Check for NULL result pointer.
+
+1999-06-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * manual/users.texi (Lookup User): Document POSIX return
+       semantics for getpwuid_r and getgrgid_r.
+
+       * manual/socket.texi (Host Names): Document that the result
+       pointer is null in case of error or host not found and fix a
+       typo.  Give a small example.
+
 1999-06-30  Ulrich Drepper  <drepper@cygnus.com>
 
        * pwd/getpw.c: Add warning since no buffer size is given and
index d8235daf70f238ca0ef38d38df9ccfa495451fac..923f21fe409b8be46bbd2cc941a8ca65e8f84260 100644 (file)
@@ -270,7 +270,7 @@ ruserok(rhost, superuser, ruser, luser)
        buffer = __alloca (buflen);
 
        while (__gethostbyname_r (rhost, &hostbuf, buffer, buflen, &hp, &herr)
-              < 0)
+              != 0)
          if (herr != NETDB_INTERNAL || errno != ERANGE)
            return -1;
          else
index 7879a77b7c9a9010a5428ff1c5b3229847422722..1a24beb7ca4ef8b1460feb5bf54dcc29aa06f4e1 100644 (file)
@@ -2191,13 +2191,13 @@ All these functions are defined in @file{stdlib.h}.
 @comment SVID, Unix98
 @deftypefun {char *} ecvt (double @var{value}, int @var{ndigit}, int *@var{decpt}, int *@var{neg})
 The function @code{ecvt} converts the floating-point number @var{value}
-to a string with at most @var{ndigit} decimal digits.
-The returned string contains no decimal point or sign. The first
-digit of the string is non-zero (unless @var{value} is actually zero)
-and the last digit is rounded to nearest.  @var{decpt} is set to the
+to a string with at most @var{ndigit} decimal digits.  The
+returned string contains no decimal point or sign. The first digit of
+the string is non-zero (unless @var{value} is actually zero) and the
+last digit is rounded to nearest.  @code{*@var{decpt}} is set to the
 index in the string of the first digit after the decimal point.
-@var{neg} is set to a nonzero value if @var{value} is negative, zero
-otherwise.
+@code{*@var{neg}} is set to a nonzero value if @var{value} is negative,
+zero otherwise.
 
 If @var{ndigit} decimal digits would exceed the precision of a
 @code{double} it is reduced to a system-specific value.
@@ -2205,16 +2205,16 @@ If @var{ndigit} decimal digits would exceed the precision of a
 The returned string is statically allocated and overwritten by each call
 to @code{ecvt}.
 
-If @var{value} is zero, it's implementation defined whether @var{decpt} is
-@code{0} or @code{1}.
+If @var{value} is zero, it is implementation defined whether
+@code{*@var{decpt}} is @code{0} or @code{1}.
 
-For example: @code{ecvt (12.3, 5, &decpt, &neg)} returns @code{"12300"}
-and sets @var{decpt} to @code{2} and @var{neg} to @code{0}.
+For example: @code{ecvt (12.3, 5, &d, &n)} returns @code{"12300"}
+and sets @var{d} to @code{2} and @var{n} to @code{0}.
 @end deftypefun
 
 @comment stdlib.h
 @comment SVID, Unix98
-@deftypefun {char *} fcvt (double @var{value}, int @var{ndigit}, int @var{decpt}, int *@var{neg})
+@deftypefun {char *} fcvt (double @var{value}, int @var{ndigit}, int *@var{decpt}, int *@var{neg})
 The function @code{fcvt} is like @code{ecvt}, but @var{ndigit} specifies
 the number of digits after the decimal point.  If @var{ndigit} is less
 than zero, @var{value} is rounded to the @math{@var{ndigit}+1}'th place to the
@@ -2254,7 +2254,7 @@ restricted by the precision of a @code{long double}.
 
 @comment stdlib.h
 @comment GNU
-@deftypefun {char *} qfcvt (long double @var{value}, int @var{ndigit}, int @var{decpt}, int *@var{neg})
+@deftypefun {char *} qfcvt (long double @var{value}, int @var{ndigit}, int *@var{decpt}, int *@var{neg})
 This function is equivalent to @code{fcvt} except that it
 takes a @code{long double} for the first parameter and that @var{ndigit} is
 restricted by the precision of a @code{long double}.
@@ -2292,7 +2292,7 @@ This function is a GNU extension.
 
 @comment stdlib.h
 @comment SVID, Unix98
-@deftypefun {char *} fcvt_r (double @var{value}, int @var{ndigit}, int @var{decpt}, int *@var{neg}, char *@var{buf}, size_t @var{len})
+@deftypefun {char *} fcvt_r (double @var{value}, int @var{ndigit}, int *@var{decpt}, int *@var{neg}, char *@var{buf}, size_t @var{len})
 The @code{fcvt_r} function is the same as @code{fcvt}, except
 that it places its result into the user-specified buffer pointed to by
 @var{buf}, with length @var{len}.
@@ -2312,7 +2312,7 @@ This function is a GNU extension.
 
 @comment stdlib.h
 @comment GNU
-@deftypefun {char *} qfcvt_r (long double @var{value}, int @var{ndigit}, int @var{decpt}, int *@var{neg}, char *@var{buf}, size_t @var{len})
+@deftypefun {char *} qfcvt_r (long double @var{value}, int @var{ndigit}, int *@var{decpt}, int *@var{neg}, char *@var{buf}, size_t @var{len})
 The @code{qfcvt_r} function is the same as @code{qfcvt}, except
 that it places its result into the user-specified buffer pointed to by
 @var{buf}, with length @var{len}.
index b9102c62e1f2c77dabfae3f1132f1351a826d931..d77e556214e5333a042b027777e8dab8d87b2e2c 100644 (file)
@@ -1284,13 +1284,42 @@ pointer and the size of the buffer in the @var{buf} and @var{buflen}
 parameters.
 
 A pointer to the buffer, in which the result is stored, is available in
-@code{*@var{result}} after the function call successfully returned.
-Success is signalled by a zero return value.  If the function failed the
-return value is an error number.  In addition to the errors defined for
-@code{gethostbyname} it can also be @code{ERANGE}.  In this case the
-call should be repeated with a larger buffer.  Additional error
-information is not stored in the global variable @code{h_errno} but
-instead in the object pointed to by @var{h_errnop}.
+@code{*@var{result}} after the function call successfully returned.  If
+an error occurs or if no entry is found, the pointer @code{*var{result}
+is a null pointer.  Success is signalled by a zero return value.  If the
+function failed the return value is an error number.  In addition to the
+errors defined for @code{gethostbyname} it can also be @code{ERANGE}.
+In this case the call should be repeated with a larger buffer.
+Additional error information is not stored in the global variable
+@code{h_errno} but instead in the object pointed to by @var{h_errnop}.
+
+Here's a small example:
+@smallexample
+struct hostent *
+gethostname (char *host)
+@{
+  struct hostent hostbuf, *hp;
+  size_t hstbuflen;
+  char *tmphstbuf;
+  int res;
+  int herr;
+
+  hstbuflen = 1024;
+  tmphstbuf = malloc (hstbuflen);
+
+  while ((res = gethostbyname_r (host, &hostbuf, tmphstbuf, hstbuflen,
+                                 &hp, &herr)) == ERANGE)
+    @{
+      /* Enlarge the buffer.  */
+      hstbuflen *= 2;
+      tmphstbuf = realloc (tmphstbuf, hstbuflen);
+    @}
+  /*  Check for errors.  */
+  if (res || hp == NULL)
+    return NULL;
+  return hp->h_name;
+@}
+@end smallexample
 @end deftypefun
 
 @comment netdb.h
@@ -1314,7 +1343,7 @@ Internet address, use @code{AF_INET6}.
 
 Similar to the @code{gethostbyname_r} function, the caller must provide
 buffers for the result and memory used internally.  In case of success
-the funciton returns zero.  Otherwise the value is an error number where
+the function returns zero.  Otherwise the value is an error number where
 @code{ERANGE} has the special meaning that the caller-provided buffer is
 too small.
 @end deftypefun
index e1c04302799f403a39289ec9c8d32606f17f2298..7317f5efa20de4c8490230406ee60378cabf2902 100644 (file)
@@ -1479,12 +1479,14 @@ the information instead of using a static buffer.  The first
 are used to contain additional information, normally strings which are
 pointed to by the elements of the result structure.
 
-If the return value is @code{0} the pointer returned in @var{result}
-points to the record which contains the wanted data (i.e., @var{result}
-contains the value @var{result_buf}).  If it is nonzero, there is no
-user in the data base with user ID @var{uid}, or the buffer @var{buffer}
-is too small to contain all the needed information.  In the latter case,
-@var{errno} is set to @code{ERANGE}.
+If a user with ID @var{uid} is found, the pointer returned in
+@var{result} points to the record which contains the wanted data (i.e.,
+@var{result} contains the value @var{result_buf}).  If no user is found
+or if an error occured, the pointer returned in @var{result} is a null
+pointer.  The function returns zero or an error code.  If the buffer
+@var{buffer} is too small to contain all the needed information, the
+error code @code{ERANGE} is returned and @var{errno} is set to
+@code{ERANGE}.
 @end deftypefun
 
 
@@ -1690,12 +1692,14 @@ the information instead of using a static buffer.  The first
 are used to contain additional information, normally strings which are
 pointed to by the elements of the result structure.
 
-If the return value is @code{0} the pointer returned in @var{result}
-points to the requested data (i.e., @var{result} contains the value
-@var{result_buf}).  If it is nonzero, there is no group in the data base
-with group ID @var{gid}, or the buffer @var{buffer} is too small to
-contain all the needed information.  In the latter case, @var{errno} is
-set to @code{ERANGE}.
+If a group with ID @var{gid} is found, the pointer returned in
+@var{result} points to the record which contains the wanted data (i.e.,
+@var{result} contains the value @var{result_buf}).  If no group is found
+or if an error occured, the pointer returned in @var{result} is a null
+pointer.  The function returns zero or an error code.  If the buffer
+@var{buffer} is too small to contain all the needed information, the
+error code @code{ERANGE} is returned and @var{errno} is set to
+@code{ERANGE}.
 @end deftypefun
 
 @comment grp.h
index e291769237697ca46407a03cf703f579cb3679b4..5973ef0eea4af889b0c6ffedba862e1f8e523bfe 100644 (file)
@@ -50,6 +50,9 @@ __getpw (uid, buf)
   if (__getpwuid_r (uid, &resbuf, tmpbuf, buflen, &p) != 0)
     return -1;
 
+  if (p == NULL)
+    return -1;
+
   if (sprintf (buf, "%s:%s:%lu:%lu:%s:%s:%s", p->pw_name, p->pw_passwd,
               (unsigned long int) p->pw_uid, (unsigned long int) p->pw_gid,
               p->pw_gecos, p->pw_dir, p->pw_shell) < 0)