003 File Manager
Current Path:
/usr/src/lib/libc/rpc
usr
/
src
/
lib
/
libc
/
rpc
/
📁
..
📄
DISCLAIMER
(3.23 KB)
📄
Makefile.inc
(5.92 KB)
📄
README
(7.92 KB)
📄
Symbol.map
(4.1 KB)
📄
auth_des.c
(13.95 KB)
📄
auth_none.c
(4.69 KB)
📄
auth_time.c
(12.49 KB)
📄
auth_unix.c
(9.43 KB)
📄
authdes_prot.c
(3.06 KB)
📄
authunix_prot.c
(2.73 KB)
📄
bindresvport.3
(2 KB)
📄
bindresvport.c
(4.21 KB)
📄
clnt_bcast.c
(18.36 KB)
📄
clnt_dg.c
(23.62 KB)
📄
clnt_generic.c
(12.83 KB)
📄
clnt_perror.c
(8.23 KB)
📄
clnt_raw.c
(7.98 KB)
📄
clnt_simple.c
(6.27 KB)
📄
clnt_vc.c
(23.01 KB)
📄
crypt_client.c
(3.44 KB)
📄
des_crypt.3
(2.64 KB)
📄
des_crypt.c
(3.92 KB)
📄
des_soft.c
(2.8 KB)
📄
getnetconfig.3
(4.15 KB)
📄
getnetconfig.c
(19.6 KB)
📄
getnetpath.3
(3.04 KB)
📄
getnetpath.c
(8.87 KB)
📄
getpublickey.c
(4.35 KB)
📄
getrpcent.3
(2.09 KB)
📄
getrpcent.c
(21.69 KB)
📄
getrpcport.3
(805 B)
📄
getrpcport.c
(2.77 KB)
📄
key_call.c
(11.85 KB)
📄
key_prot_xdr.c
(4.38 KB)
📄
mt_misc.c
(3.28 KB)
📄
mt_misc.h
(2.66 KB)
📄
netconfig
(729 B)
📄
netconfig.5
(3.3 KB)
📄
netname.c
(4.06 KB)
📄
netnamer.c
(7.35 KB)
📄
pmap_clnt.c
(3.71 KB)
📄
pmap_getmaps.c
(3.21 KB)
📄
pmap_getport.c
(3.41 KB)
📄
pmap_prot.c
(2.43 KB)
📄
pmap_prot2.c
(4.56 KB)
📄
pmap_rmt.c
(4.94 KB)
📄
publickey.3
(1.11 KB)
📄
publickey.5
(944 B)
📄
rpc
(1.58 KB)
📄
rpc.3
(12.8 KB)
📄
rpc.5
(1.17 KB)
📄
rpc_callmsg.c
(6.35 KB)
📄
rpc_clnt_auth.3
(2.33 KB)
📄
rpc_clnt_calls.3
(8.12 KB)
📄
rpc_clnt_create.3
(13.28 KB)
📄
rpc_com.h
(3.39 KB)
📄
rpc_commondata.c
(2.08 KB)
📄
rpc_dtablesize.c
(2.57 KB)
📄
rpc_generic.c
(18.13 KB)
📄
rpc_prot.c
(8.7 KB)
📄
rpc_secure.3
(5.9 KB)
📄
rpc_soc.3
(31.75 KB)
📄
rpc_soc.c
(13.54 KB)
📄
rpc_svc_calls.3
(6.58 KB)
📄
rpc_svc_create.3
(8.04 KB)
📄
rpc_svc_err.3
(2.65 KB)
📄
rpc_svc_reg.3
(4.5 KB)
📄
rpc_xdr.3
(2.71 KB)
📄
rpcb_clnt.c
(34.61 KB)
📄
rpcb_prot.c
(8.45 KB)
📄
rpcb_st_xdr.c
(6.7 KB)
📄
rpcbind.3
(4.71 KB)
📄
rpcdname.c
(2.73 KB)
📄
rpcsec_gss_stub.c
(1.8 KB)
📄
rtime.3
(934 B)
📄
rtime.c
(4.18 KB)
📄
svc.c
(17.78 KB)
📄
svc_auth.c
(6.43 KB)
📄
svc_auth_des.c
(13.79 KB)
📄
svc_auth_unix.c
(4.82 KB)
📄
svc_dg.c
(19.47 KB)
📄
svc_generic.c
(8.75 KB)
📄
svc_raw.c
(6.98 KB)
📄
svc_run.c
(2.98 KB)
📄
svc_simple.c
(8.78 KB)
📄
svc_vc.c
(19.38 KB)
Editing: svc_auth_unix.c
/*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2009, Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #if defined(LIBC_SCCS) && !defined(lint) static char *sccsid2 = "@(#)svc_auth_unix.c 1.28 88/02/08 Copyr 1984 Sun Micro"; static char *sccsid = "@(#)svc_auth_unix.c 2.3 88/08/01 4.0 RPCSRC"; #endif #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); /* * svc_auth_unix.c * Handles UNIX flavor authentication parameters on the service side of rpc. * There are two svc auth implementations here: AUTH_UNIX and AUTH_SHORT. * _svcauth_unix does full blown unix style uid,gid+gids auth, * _svcauth_short uses a shorthand auth to index into a cache of longhand auths. * Note: the shorthand has been gutted for efficiency. * * Copyright (C) 1984, Sun Microsystems, Inc. */ #include "namespace.h" #include <assert.h> #include <stdio.h> #include <string.h> #include <rpc/rpc.h> #include "un-namespace.h" /* * Unix longhand authenticator */ enum auth_stat _svcauth_unix(struct svc_req *rqst, struct rpc_msg *msg) { enum auth_stat stat; XDR xdrs; struct authunix_parms *aup; int32_t *buf; struct area { struct authunix_parms area_aup; char area_machname[MAX_MACHINE_NAME+1]; u_int area_gids[NGRPS]; } *area; u_int auth_len; size_t str_len, gid_len; u_int i; assert(rqst != NULL); assert(msg != NULL); area = (struct area *) rqst->rq_clntcred; aup = &area->area_aup; aup->aup_machname = area->area_machname; aup->aup_gids = area->area_gids; auth_len = (u_int)msg->rm_call.cb_cred.oa_length; xdrmem_create(&xdrs, msg->rm_call.cb_cred.oa_base, auth_len,XDR_DECODE); buf = XDR_INLINE(&xdrs, auth_len); if (buf != NULL) { aup->aup_time = IXDR_GET_INT32(buf); str_len = (size_t)IXDR_GET_U_INT32(buf); if (str_len > MAX_MACHINE_NAME) { stat = AUTH_BADCRED; goto done; } memmove(aup->aup_machname, buf, str_len); aup->aup_machname[str_len] = 0; str_len = RNDUP(str_len); buf += str_len / sizeof (int32_t); aup->aup_uid = (int)IXDR_GET_INT32(buf); aup->aup_gid = (int)IXDR_GET_INT32(buf); gid_len = (size_t)IXDR_GET_U_INT32(buf); if (gid_len > NGRPS) { stat = AUTH_BADCRED; goto done; } aup->aup_len = gid_len; for (i = 0; i < gid_len; i++) { aup->aup_gids[i] = (int)IXDR_GET_INT32(buf); } /* * five is the smallest unix credentials structure - * timestamp, hostname len (0), uid, gid, and gids len (0). */ if ((5 + gid_len) * BYTES_PER_XDR_UNIT + str_len > auth_len) { (void) printf("bad auth_len gid %ld str %ld auth %u\n", (long)gid_len, (long)str_len, auth_len); stat = AUTH_BADCRED; goto done; } } else if (! xdr_authunix_parms(&xdrs, aup)) { xdrs.x_op = XDR_FREE; (void)xdr_authunix_parms(&xdrs, aup); stat = AUTH_BADCRED; goto done; } /* get the verifier */ if ((u_int)msg->rm_call.cb_verf.oa_length) { rqst->rq_xprt->xp_verf.oa_flavor = msg->rm_call.cb_verf.oa_flavor; rqst->rq_xprt->xp_verf.oa_base = msg->rm_call.cb_verf.oa_base; rqst->rq_xprt->xp_verf.oa_length = msg->rm_call.cb_verf.oa_length; } else { rqst->rq_xprt->xp_verf.oa_flavor = AUTH_NULL; rqst->rq_xprt->xp_verf.oa_length = 0; } stat = AUTH_OK; done: XDR_DESTROY(&xdrs); return (stat); } /* * Shorthand unix authenticator * Looks up longhand in a cache. */ /*ARGSUSED*/ enum auth_stat _svcauth_short(struct svc_req *rqst, struct rpc_msg *msg) { return (AUTH_REJECTEDCRED); }
Upload File
Create Folder