Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 6 Mar 1998 08:52:47 +0000 (08:52 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 6 Mar 1998 08:52:47 +0000 (08:52 +0000)
1998-03-06  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

* nis/nis_call.c (__do_niscall): Safe and reset errno.

* nis/ypclnt.c (__yp_bind): Safe and reset errno.

ChangeLog
nis/nis_call.c
nis/ypclnt.c

index 586e875..711db65 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1998-03-06  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+       * nis/nis_call.c (__do_niscall): Safe and reset errno.
+
+       * nis/ypclnt.c (__yp_bind): Safe and reset errno.
+
 1998-03-01  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
 
        * sysdeps/generic/getresuid.c (__getresuid): Use ISO C
index 196f6b3..8e0aca2 100644 (file)
@@ -17,6 +17,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#include <errno.h>
 #include <fcntl.h>
 #include <string.h>
 #include <rpc/rpc.h>
@@ -559,6 +560,7 @@ __do_niscall (const_nis_name name, u_long prog, xdrproc_t xargs,
   nis_server *server;
   u_int server_len;
   cache2_info cinfo = {-1, -1, -1};
+  int saved_errno = errno;
 
   if (name == NULL)
     return NIS_BADNAME;
@@ -572,7 +574,10 @@ __do_niscall (const_nis_name name, u_long prog, xdrproc_t xargs,
       nis_error status;
       dir = readColdStartFile ();
       if (dir == NULL) /* No /var/nis/NIS_COLD_START->no NIS+ installed */
-       return NIS_UNAVAIL;
+       {
+         __set_errno (saved_errno);
+         return NIS_UNAVAIL;
+       }
 
       dir = rec_dirsearch (name, dir, flags, &status);
       if (dir == NULL)
index 9b93645..924a629 100644 (file)
@@ -104,6 +104,7 @@ __yp_bind (const char *domain, dom_binding **ypdb)
          struct iovec vec[2];
          u_short port;
          int fd;
+         int saved_errno = errno;
 
          sprintf (path, "%s/%s.%ld", BINDINGDIR, domain, YPBINDVERS);
          fd = open (path, O_RDONLY);
@@ -132,17 +133,20 @@ __yp_bind (const char *domain, dom_binding **ypdb)
                }
              close (fd);
            }
+         __set_errno (saved_errno);
        }
 #endif /* USE_BINDINGDIR */
 
       if (ysd->dom_vers == -1)
-        {
-          if(ysd->dom_client)
-            {
-              clnt_destroy(ysd->dom_client);
-              ysd->dom_client = NULL;
-              ysd->dom_socket = -1;
-            }
+       {
+         int saved_errno = errno;
+
+         if(ysd->dom_client)
+           {
+             clnt_destroy(ysd->dom_client);
+             ysd->dom_client = NULL;
+             ysd->dom_socket = -1;
+           }
           memset (&clnt_saddr, '\0', sizeof clnt_saddr);
           clnt_saddr.sin_family = AF_INET;
           clnt_saddr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
@@ -153,6 +157,7 @@ __yp_bind (const char *domain, dom_binding **ypdb)
             {
               if (is_new)
                 free (ysd);
+             __set_errno (saved_errno);
               return YPERR_YPBIND;
             }
           /*
@@ -165,6 +170,7 @@ __yp_bind (const char *domain, dom_binding **ypdb)
               clnt_destroy (client);
               if (is_new)
                 free (ysd);
+             __set_errno (saved_errno);
               return YPERR_YPBIND;
             }