aboutsummaryrefslogtreecommitdiff
path: root/sunrpc
diff options
context:
space:
mode:
Diffstat (limited to 'sunrpc')
-rw-r--r--sunrpc/clnt_unix.c12
-rw-r--r--sunrpc/openchild.c5
-rw-r--r--sunrpc/svc_unix.c12
3 files changed, 15 insertions, 14 deletions
diff --git a/sunrpc/clnt_unix.c b/sunrpc/clnt_unix.c
index ad12d5fa89..f5d06ce5f5 100644
--- a/sunrpc/clnt_unix.c
+++ b/sunrpc/clnt_unix.c
@@ -436,7 +436,7 @@ clntunix_destroy (CLIENT *h)
struct cmessage {
struct cmsghdr cmsg;
- struct cmsgcred cmcred;
+ struct ucred cmcred;
};
static int
@@ -469,7 +469,7 @@ __msgread (int sock, void *buf, size_t cnt)
static int
__msgwrite (int sock, void *buf, size_t cnt)
{
-#ifndef SCM_CREDS
+#ifndef SCM_CREDENTIALS
/* We cannot implement this reliably. */
__set_errno (ENOSYS);
return -1;
@@ -481,15 +481,15 @@ __msgwrite (int sock, void *buf, size_t cnt)
iov[0].iov_base = buf;
iov[0].iov_len = cnt;
- cm.cmsg.cmsg_type = SCM_CREDS;
+ cm.cmsg.cmsg_type = SCM_CREDENTIALS;
cm.cmsg.cmsg_level = SOL_SOCKET;
cm.cmsg.cmsg_len = sizeof (struct cmessage);
/* XXX I'm not sure, if gete?id() is always correct, or if we should use
get?id(). But since keyserv needs geteuid(), we have no other chance.
It would be much better, if the kernel could pass both to the server. */
- cm.cmcred.cmcred_pid = __getpid ();
- cm.cmcred.cmcred_uid = __geteuid ();
- cm.cmcred.cmcred_gid = __getegid ();
+ cm.cmcred.pid = __getpid ();
+ cm.cmcred.uid = __geteuid ();
+ cm.cmcred.gid = __getegid ();
msg.msg_iov = iov;
msg.msg_iovlen = 1;
diff --git a/sunrpc/openchild.c b/sunrpc/openchild.c
index e30e5cc872..8399b261bd 100644
--- a/sunrpc/openchild.c
+++ b/sunrpc/openchild.c
@@ -46,6 +46,7 @@
#ifdef USE_IN_LIBIO
# include <libio/iolibio.h>
# define fflush(s) _IO_fflush (s)
+# define __fdopen(fd,m) _IO_fdopen (fd,m)
#endif
/*
@@ -88,9 +89,9 @@ _openchild (char *command, FILE ** fto, FILE ** ffrom)
/*
* parent: write into pdto[1], read from pdfrom[0]
*/
- *fto = fdopen (pdto[1], "w");
+ *fto = __fdopen (pdto[1], "w");
__close (pdto[0]);
- *ffrom = fdopen (pdfrom[0], "r");
+ *ffrom = __fdopen (pdfrom[0], "r");
__close (pdfrom[1]);
break;
}
diff --git a/sunrpc/svc_unix.c b/sunrpc/svc_unix.c
index c42d30ed83..9ee64d0303 100644
--- a/sunrpc/svc_unix.c
+++ b/sunrpc/svc_unix.c
@@ -281,7 +281,7 @@ svcunix_destroy (SVCXPRT *xprt)
struct cmessage {
struct cmsghdr cmsg;
- struct cmsgcred cmcred;
+ struct ucred cmcred;
};
/* XXX This is not thread safe, but since the main functions in svc.c
@@ -318,7 +318,7 @@ __msgread (int sock, void *buf, size_t cnt)
static int
__msgwrite (int sock, void *buf, size_t cnt)
{
-#ifndef SCM_CREDS
+#ifndef SCM_CREDENTIALS
/* We cannot implement this reliably. */
__set_errno (ENOSYS);
return -1;
@@ -329,15 +329,15 @@ __msgwrite (int sock, void *buf, size_t cnt)
iov[0].iov_base = buf;
iov[0].iov_len = cnt;
- cm.cmsg.cmsg_type = SCM_CREDS;
+ cm.cmsg.cmsg_type = SCM_CREDENTIALS;
cm.cmsg.cmsg_level = SOL_SOCKET;
cm.cmsg.cmsg_len = sizeof (struct cmessage);
/* XXX I'm not sure, if we really should use gete?id(), or get?id().
It would be much better, if the kernel could pass both to the
client. */
- cm.cmcred.cmcred_pid = __getpid ();
- cm.cmcred.cmcred_uid = __geteuid ();
- cm.cmcred.cmcred_gid = __getegid ();
+ cm.cmcred.pid = __getpid ();
+ cm.cmcred.uid = __geteuid ();
+ cm.cmcred.gid = __getegid ();
msg.msg_iov = iov;
msg.msg_iovlen = 1;