summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--sunrpc/key_call.c25
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/signum.h1
3 files changed, 27 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 56a29840a5..15944ea513 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+1999-11-13  Thorsten Kukuk  <kukuk@suse.de>
+
+	* sysdeps/unix/sysv/linux/sparc/bits/signum.h: Add SIGPWR define
+	from current kernel headers.
+
+	* sunrpc/key_call.c: Use /usr/etc/keyenvoy only if we don't have
+	SO_PASSCRED defined.
+
 1999-11-12  Ulrich Drepper  <drepper@cygnus.com>
 
 	* locale/C-ctype.c: Fix typo in char class name.
diff --git a/sunrpc/key_call.c b/sunrpc/key_call.c
index 2f4ca25d94..895e5a3a4d 100644
--- a/sunrpc/key_call.c
+++ b/sunrpc/key_call.c
@@ -1,7 +1,4 @@
 /*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
- */
-/*
  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  * unrestricted use provided that this legend is included on all tape
  * media and as a part of the software program in whole or part.  Users
@@ -29,11 +26,15 @@
  * 2550 Garcia Avenue
  * Mountain View, California  94043
  */
-
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
+ */
 /*
  * The original source is from the RPCSRC 4.0 package from Sun Microsystems.
- * The Interface to keyserver protocoll 2, RPC over AF_UNIX und Linux/doors
- * was added by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
+ * The Interface to keyserver protocoll 2, RPC over AF_UNIX and Linux/doors
+ * was added by Thorsten Kukuk <kukuk@suse.de>
+ * Since the Linux/doors project was stopped, I doubt that this code will
+ * ever be useful <kukuk@suse.de>.
  */
 
 #include <stdio.h>
@@ -59,8 +60,9 @@
 
 #define debug(msg)		/* turn off debugging */
 
+#ifndef SO_PASSCRED
 extern int _openchild (const char *command, FILE **fto, FILE **ffrom);
-
+#endif
 
 static int key_call (u_long, xdrproc_t xdr_arg, char *,
 		     xdrproc_t xdr_rslt, char *) internal_function;
@@ -272,6 +274,7 @@ cryptkeyres *(*__key_encryptsession_pk_LOCAL) (uid_t, char *);
 cryptkeyres *(*__key_decryptsession_pk_LOCAL) (uid_t, char *);
 des_block *(*__key_gendes_LOCAL) (uid_t, char *);
 
+#ifndef SO_PASSCRED
 static int
 internal_function
 key_call_keyenvoy (u_long proc, xdrproc_t xdr_arg, char *arg,
@@ -349,6 +352,7 @@ key_call_keyenvoy (u_long proc, xdrproc_t xdr_arg, char *arg,
 
   return success;
 }
+#endif
 
 struct  key_call_private {
   CLIENT  *client;        /* Client handle */
@@ -556,7 +560,9 @@ internal_function
 key_call (u_long proc, xdrproc_t xdr_arg, char *arg,
 	  xdrproc_t xdr_rslt, char *rslt)
 {
+#ifndef SO_PASSCRED
   static int use_keyenvoy;
+#endif
 #ifdef HAVE_DOORS
   static int not_use_doors;
 #endif
@@ -591,6 +597,10 @@ key_call (u_long proc, xdrproc_t xdr_arg, char *arg,
       not_use_doors = 1;
     }
 #endif
+
+#ifdef SO_PASSCRED
+  return key_call_socket (proc, xdr_arg, arg, xdr_rslt, rslt);
+#else
   if (!use_keyenvoy)
     {
       if (key_call_socket (proc, xdr_arg, arg, xdr_rslt, rslt))
@@ -598,4 +608,5 @@ key_call (u_long proc, xdrproc_t xdr_arg, char *arg,
       use_keyenvoy = 1;
     }
   return key_call_keyenvoy (proc, xdr_arg, arg, xdr_rslt, rslt);
+#endif
 }
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/signum.h b/sysdeps/unix/sysv/linux/sparc/bits/signum.h
index 976eef2758..31a6901b1a 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/signum.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/signum.h
@@ -65,6 +65,7 @@
 #define SIGPROF		27
 #define SIGWINCH	28
 #define SIGLOST		29
+#define SIGPWR          SIGLOST
 #define SIGUSR1		30
 #define SIGUSR2		31