diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-03-06 08:52:47 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-03-06 08:52:47 +0000 |
commit | 36a8586ddfca3b825704eedda81c81ac8d653f1e (patch) | |
tree | c840d4ae7316819472c112325c62b06ed226f726 /nis/ypclnt.c | |
parent | b3c06869ccbf976b78a93a526d82023a2e596cb8 (diff) | |
download | glibc-36a8586ddfca3b825704eedda81c81ac8d653f1e.tar glibc-36a8586ddfca3b825704eedda81c81ac8d653f1e.tar.gz glibc-36a8586ddfca3b825704eedda81c81ac8d653f1e.tar.bz2 glibc-36a8586ddfca3b825704eedda81c81ac8d653f1e.zip |
Update.
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.
Diffstat (limited to 'nis/ypclnt.c')
-rw-r--r-- | nis/ypclnt.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/nis/ypclnt.c b/nis/ypclnt.c index 9b936457a5..924a6293f1 100644 --- a/nis/ypclnt.c +++ b/nis/ypclnt.c @@ -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; } |