* configure.in: Add AC_TYPE_GETGROUPS to determine argument to
authorEzra Peisach <epeisach@mit.edu>
Thu, 5 Jul 2001 16:15:42 +0000 (16:15 +0000)
committerEzra Peisach <epeisach@mit.edu>
Thu, 5 Jul 2001 16:15:42 +0000 (16:15 +0000)
getgroups.

* auth_unix.c (authunix_create_default): Use GETGROUPS_T array in
call to getgroups. Copy into array of int for call to
authunix_create. Note: If auth_unix protection ever used with this
code, we will need to cleanup assumptions in int being 32 bits in
OTW transfer of gids.

* clnt_tcp.c, svc_tcp.c: Change writetcp and readtcp to take char
* as first argument to be compatible with xdrrec_create.

* xdr.c (xdr_opaque): Cast argument in call to XDR_GETBYTES.

* svc.h: Add prototype for gssrpc_svcudp_enablecache.

* svc_auth_gssapi.c (_gssrpc_svcauth_gssapi): Change
_svcauth_gssapi to _gssrpc_svcauth_gssapi for consistancy.

* svc_auth.c: Move prototypes for _gssrpc_svcauth_{unix, null,
short, gssapi} to:
* svc_auth.h: here.

* svc_auth_unix.c: Update _gssrpc_svcauth_short and
_gssrpc_svcauth_unix to match prototype.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13563 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/rpc/ChangeLog
src/lib/rpc/auth_unix.c
src/lib/rpc/clnt_tcp.c
src/lib/rpc/configure.in
src/lib/rpc/svc.h
src/lib/rpc/svc_auth.c
src/lib/rpc/svc_auth.h
src/lib/rpc/svc_auth_gssapi.c
src/lib/rpc/svc_auth_unix.c
src/lib/rpc/svc_tcp.c
src/lib/rpc/xdr.c

index 6410072a669a384b2e539f9321d45c4132e217b0..76556bb77da7ad7781477156e69872a384c827ab 100644 (file)
@@ -1,3 +1,31 @@
+2001-07-05  Ezra Peisach  <epeisach@mit.edu>
+
+       * configure.in: Add AC_TYPE_GETGROUPS to determine argument to
+       getgroups.
+
+       * auth_unix.c (authunix_create_default): Use GETGROUPS_T array in
+       call to getgroups. Copy into array of int for call to
+       authunix_create. Note: If auth_unix protection ever used with this
+       code, we will need to cleanup assumptions in int being 32 bits in
+       OTW transfer of gids.
+
+       * clnt_tcp.c, svc_tcp.c: Change writetcp and readtcp to take char
+       * as first argument to be compatible with xdrrec_create.
+
+       * xdr.c (xdr_opaque): Cast argument in call to XDR_GETBYTES.
+
+       * svc.h: Add prototype for gssrpc_svcudp_enablecache.
+
+       * svc_auth_gssapi.c (_gssrpc_svcauth_gssapi): Change
+       _svcauth_gssapi to _gssrpc_svcauth_gssapi for consistancy.
+
+       * svc_auth.c: Move prototypes for _gssrpc_svcauth_{unix, null,
+       short, gssapi} to:
+       * svc_auth.h: here.
+
+       * svc_auth_unix.c: Update _gssrpc_svcauth_short and
+       _gssrpc_svcauth_unix to match prototype.
+
 2001-06-28  Ezra Peisach  <epeisach@mit.edu>
 
        * auth.h: Provide full prototype for xdr_des_block.
index 696bb1f1e08c6425ba691e3cace041b6eeddce60..9411fdc8a38a882b062a75c40a47d70a550545cb 100644 (file)
@@ -176,7 +176,8 @@ authunix_create_default()
        char machname[MAX_MACHINE_NAME + 1];
        register int uid;
        register int gid;
-       int gids[NGRPS];
+       GETGROUPS_T gids[NGRPS];
+       int igids[NGRPS], i;
 
        if (gethostname(machname, MAX_MACHINE_NAME) == -1)
                abort();
@@ -185,7 +186,10 @@ authunix_create_default()
        gid = getegid();
        if ((len = getgroups(NGRPS, gids)) < 0)
                abort();
-       return (authunix_create(machname, uid, gid, len, gids));
+       for(i = 0; i < NGRPS; i++) {
+               igids[i] = gids[i];
+       }
+       return (authunix_create(machname, uid, gid, len, igids));
 }
 
 /*
index c89950b432d5389188e5b2646449214a76d5eb76..1201e7e99033a3ec30b10607f75f14978d139344 100644 (file)
@@ -91,8 +91,8 @@ struct ct_data {
        XDR             ct_xdrs;
 };
 
-static int     readtcp(struct ct_data *, caddr_t, int);
-static int     writetcp(struct ct_data *, caddr_t, int);
+static int     readtcp(char *, caddr_t, int);
+static int     writetcp(char *, caddr_t, int);
 
 
 /*
@@ -416,11 +416,12 @@ clnttcp_destroy(h)
  * around for the rpc level.
  */
 static int
-readtcp(ct, buf, len)
-       register struct ct_data *ct;
+readtcp(ctptr, buf, len)
+        char *ctptr;
        caddr_t buf;
        register int len;
 {
+  register struct ct_data *ct = (struct ct_data *)ctptr;
 #ifdef FD_SETSIZE
        fd_set mask;
        fd_set readfds;
@@ -472,11 +473,12 @@ readtcp(ct, buf, len)
 }
 
 static int
-writetcp(ct, buf, len)
-       struct ct_data *ct;
+writetcp(ctptr, buf, len)
+        char *ctptr;
        caddr_t buf;
        int len;
 {
+       struct ct_data *ct = (struct ct_data *)ctptr;
        register int i, cnt;
 
        for (cnt = len; cnt > 0; cnt -= i, buf += i) {
index a4e2cfd0e669b817d8a8aab2f1a2b672567bd538..06b8cad97f3313fddb22a0fe7135a8042b162190 100644 (file)
@@ -6,6 +6,7 @@ AC_PROG_ARCHIVE_ADD
 AC_PROG_RANLIB
 AC_PROG_INSTALL
 AC_CHECK_HEADERS(sys/uio.h)
+AC_TYPE_GETGROUPS
 dnl Arrange for types.hin to include stdlib.h
 AC_CHECK_HEADER(stdlib.h, [
      STDLIB_INCLUDE="#include <stdlib.h>"],
index 189edf32ac045cfbac146ead335d8f60ac14c686..efbbefc0abf38384893b51b0c1341988243ac39f 100644 (file)
@@ -334,8 +334,10 @@ extern SVCXPRT *svcraw_create(void);
  */
 #define svcudp_create          gssrpc_svcudp_create
 #define svcudp_bufcreate       gssrpc_svcudp_bufcreate
+#define svcudp_enablecache     gssrpc_svcudp_enablecache
 extern SVCXPRT *svcudp_create(int);
 extern SVCXPRT *svcudp_bufcreate(int, unsigned int, unsigned int);
+extern int svcudp_enablecache(SVCXPRT *, rpc_u_int32);
 
 /*
  * Tcp based rpc.
index 2b65d5b594b26a43ce4ab3fbd7df2066626765ea..2e28b5c059137b05499b0d15555ad865fca0d46f 100644 (file)
@@ -52,19 +52,6 @@ static char sccsid[] = "@(#)svc_auth.c       2.1 88/08/07 4.0 RPCSRC; from 1.19 87/08/
  *
  */
 
-#define _svcauth_null          _gssrpc_svcauth_null
-#define _svcauth_unix          _gssrpc_svcauth_unix
-#define _svcauth_short         _gssrpc_svcauth_short
-
-/* no authentication */
-enum auth_stat _svcauth_null(struct svc_req *, struct rpc_msg *, bool_t *);
-/* unix style (uid, gids) */
-enum auth_stat _svcauth_unix(struct svc_req *, struct rpc_msg *, bool_t *);
-/* short hand unix style */
-enum auth_stat _svcauth_short(struct svc_req *, struct rpc_msg *, bool_t *);
-/* GSS-API style */
-enum auth_stat _svcauth_gssapi(struct svc_req *, struct rpc_msg *, bool_t *);
-
 static struct svcauthsw_type {
      unsigned int flavor;
      enum auth_stat (*authenticator)(struct svc_req *, struct rpc_msg *,
index 814732546a070ff8b58a00ae3a6123b82d6df4d4..174c945f3904e6c77a23a41177ad7d0b427e8be4 100644 (file)
@@ -66,3 +66,16 @@ extern enum auth_stat _authenticate(struct svc_req *rqst, struct rpc_msg *msg,
      ((*((auth)->svc_ah_ops->svc_ah_unwrap))(auth, xdrs, xfunc, xwhere))
 
       
+#define _svcauth_null          _gssrpc_svcauth_null
+#define _svcauth_unix          _gssrpc_svcauth_unix
+#define _svcauth_short         _gssrpc_svcauth_short
+#define _svcauth_gssapi                _gssrpc_svcauth_gssapi
+/* no authentication */
+enum auth_stat _svcauth_null(struct svc_req *, struct rpc_msg *, bool_t *);
+/* unix style (uid, gids) */
+enum auth_stat _svcauth_unix(struct svc_req *, struct rpc_msg *, bool_t *);
+/* short hand unix style */
+enum auth_stat _svcauth_short(struct svc_req *, struct rpc_msg *, bool_t *);
+/* GSS-API style */
+enum auth_stat _svcauth_gssapi(struct svc_req *, struct rpc_msg *, bool_t *);
+
index a1d46c31f0f3843073396b50437bfbb31c3fdfc9..f3257383f0cad9f8a33d543211d0d2854280ddd5 100644 (file)
@@ -117,7 +117,7 @@ static client_list *clients = NULL;
 
 extern int errno;
 
-enum auth_stat _svcauth_gssapi(rqst, msg, no_dispatch)
+enum auth_stat _gssrpc_svcauth_gssapi(rqst, msg, no_dispatch)
    register struct svc_req *rqst;
    register struct rpc_msg *msg;
    bool_t *no_dispatch;     
index 48632b2248b1298110603982a75a0592ef44a449..a947de4128739396f07131cc533abe42fd830d5c 100644 (file)
@@ -50,9 +50,10 @@ static char sccsid[] = "@(#)svc_auth_unix.c 1.28 88/02/08 Copyr 1984 Sun Micro";
  * Unix longhand authenticator
  */
 enum auth_stat
-_gssrpc_svcauth_unix(rqst, msg)
+_gssrpc_svcauth_unix(rqst, msg, dispatch)
        register struct svc_req *rqst;
        register struct rpc_msg *msg;
+       bool_t *dispatch;
 {
        register enum auth_stat stat;
        XDR xdrs;
@@ -129,9 +130,10 @@ done:
  */
 /*ARGSUSED*/
 enum auth_stat 
-_gssrpc_svcauth_short(rqst, msg)
+_gssrpc_svcauth_short(rqst, msg, dispatch)
        struct svc_req *rqst;
        struct rpc_msg *msg;
+       bool_t *dispatch;
 {
        rqst->rq_xprt->xp_auth = &svc_auth_any;
        return (AUTH_REJECTEDCRED);
index e9f5312b057181db57f23eca7728b397377d7577..3ea99aaad774f0bfa3fabfa51a7ff355917ac077 100644 (file)
@@ -89,7 +89,7 @@ static struct xp_ops svctcp_rendezvous_op = {
        svctcp_destroy
 };
 
-static int readtcp(SVCXPRT *, caddr_t, int), writetcp(SVCXPRT *, caddr_t, int);
+static int readtcp(char *, caddr_t, int), writetcp(char *, caddr_t, int);
 static SVCXPRT *makefd_xprt(int, unsigned int, unsigned int);
 
 struct tcp_rendezvous { /* kept in xprt->xp_p1 */
@@ -307,11 +307,12 @@ static struct timeval wait_per_try = { 35, 0 };
  * (And a read of zero bytes is a half closed stream => error.)
  */
 static int
-readtcp(xprt, buf, len)
-       register SVCXPRT *xprt;
+readtcp(xprtptr, buf, len)
+        char *xprtptr;
        caddr_t buf;
        register int len;
 {
+       register SVCXPRT *xprt = (SVCXPRT *) xprtptr;
        register int sock = xprt->xp_sock;
 #ifdef FD_SETSIZE
        fd_set mask;
@@ -350,11 +351,12 @@ fatal_err:
  * Any error is fatal and the connection is closed.
  */
 static int
-writetcp(xprt, buf, len)
-       register SVCXPRT *xprt;
+writetcp(xprtptr, buf, len)
+        char *xprtptr;
        caddr_t buf;
        int len;
 {
+       register SVCXPRT *xprt = (SVCXPRT *) xprtptr;
        register int i, cnt;
 
        for (cnt = len; cnt > 0; cnt -= i, buf += i) {
index ccce136a09f7c6567e4883bcce69036103b16fb4..85c86e576836846fb7a4ff17e6aef8b8565cb30a 100644 (file)
@@ -408,7 +408,7 @@ xdr_opaque(xdrs, cp, cnt)
                }
                if (rndup == 0)
                        return (TRUE);
-               return (XDR_GETBYTES(xdrs, crud, rndup));
+               return (XDR_GETBYTES(xdrs, (caddr_t) (void *)crud, rndup));
        }
 
        if (xdrs->x_op == XDR_ENCODE) {