diff options
author | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
commit | 76bcc36ed305418a3ddc5752d287ede894243e1b (patch) | |
tree | bacb320c825768471ce56f058f17ce863d592376 /xorg-server/os/rpcauth.c | |
parent | 7d894e32566b710952c44cbc71939ad1d9e2fa8d (diff) | |
parent | 0f834b91a4768673833ab4917e87d86c237bb1a6 (diff) | |
download | vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.gz vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.bz2 vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
pixman/pixman/pixman-mmx.c
xorg-server/Xext/shm.c
xorg-server/Xext/syncsrv.h
xorg-server/Xext/xvmain.c
xorg-server/Xi/exevents.c
xorg-server/Xi/opendev.c
xorg-server/composite/compalloc.c
xorg-server/composite/compoverlay.c
xorg-server/dix/colormap.c
xorg-server/dix/devices.c
xorg-server/dix/dispatch.c
xorg-server/dix/dixfonts.c
xorg-server/dix/eventconvert.c
xorg-server/dix/events.c
xorg-server/dix/gc.c
xorg-server/dix/getevents.c
xorg-server/dix/main.c
xorg-server/dix/privates.c
xorg-server/dix/registry.c
xorg-server/dix/resource.c
xorg-server/exa/exa_accel.c
xorg-server/exa/exa_migration_classic.c
xorg-server/exa/exa_unaccel.c
xorg-server/fb/fb.h
xorg-server/fb/fbcopy.c
xorg-server/fb/fbpixmap.c
xorg-server/glx/dispatch.h
xorg-server/glx/glapi.h
xorg-server/glx/glapi_gentable.c
xorg-server/glx/glapitable.h
xorg-server/glx/glprocs.h
xorg-server/glx/glxcmds.c
xorg-server/glx/glxcmdsswap.c
xorg-server/glx/glxdricommon.c
xorg-server/glx/glxdriswrast.c
xorg-server/glx/glxext.c
xorg-server/glx/indirect_dispatch.c
xorg-server/glx/indirect_dispatch.h
xorg-server/glx/indirect_dispatch_swap.c
xorg-server/glx/indirect_size.h
xorg-server/glx/indirect_size_get.h
xorg-server/glx/indirect_table.c
xorg-server/glx/indirect_util.c
xorg-server/glx/rensize.c
xorg-server/glx/single2swap.c
xorg-server/glx/singlepix.c
xorg-server/glx/singlepixswap.c
xorg-server/glx/singlesize.c
xorg-server/hw/dmx/dmxinit.c
xorg-server/hw/kdrive/ephyr/ephyr.c
xorg-server/hw/kdrive/ephyr/hostx.c
xorg-server/hw/kdrive/ephyr/hostx.h
xorg-server/hw/kdrive/src/kinput.c
xorg-server/hw/xfree86/common/compiler.h
xorg-server/hw/xwin/InitInput.c
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/ddraw.h
xorg-server/hw/xwin/glx/glwrap.c
xorg-server/hw/xwin/glx/indirect.c
xorg-server/hw/xwin/glx/wgl_ext_api.h
xorg-server/hw/xwin/glx/winpriv.c
xorg-server/hw/xwin/win.h
xorg-server/hw/xwin/winallpriv.c
xorg-server/hw/xwin/winauth.c
xorg-server/hw/xwin/winclipboard.h
xorg-server/hw/xwin/winclipboardinit.c
xorg-server/hw/xwin/winclipboardthread.c
xorg-server/hw/xwin/winclipboardunicode.c
xorg-server/hw/xwin/winclipboardwndproc.c
xorg-server/hw/xwin/winclipboardwrappers.c
xorg-server/hw/xwin/winclipboardxevents.c
xorg-server/hw/xwin/wincmap.c
xorg-server/hw/xwin/winconfig.c
xorg-server/hw/xwin/wincreatewnd.c
xorg-server/hw/xwin/wincursor.c
xorg-server/hw/xwin/windialogs.c
xorg-server/hw/xwin/winengine.c
xorg-server/hw/xwin/winerror.c
xorg-server/hw/xwin/wingc.c
xorg-server/hw/xwin/wingetsp.c
xorg-server/hw/xwin/winkeybd.c
xorg-server/hw/xwin/winkeybd.h
xorg-server/hw/xwin/winlayouts.h
xorg-server/hw/xwin/winmisc.c
xorg-server/hw/xwin/winmonitors.c
xorg-server/hw/xwin/winmouse.c
xorg-server/hw/xwin/winmsg.c
xorg-server/hw/xwin/winmsg.h
xorg-server/hw/xwin/winmultiwindowclass.c
xorg-server/hw/xwin/winmultiwindowicons.c
xorg-server/hw/xwin/winmultiwindowshape.c
xorg-server/hw/xwin/winmultiwindowwindow.c
xorg-server/hw/xwin/winmultiwindowwm.c
xorg-server/hw/xwin/winmultiwindowwndproc.c
xorg-server/hw/xwin/winnativegdi.c
xorg-server/hw/xwin/winpfbdd.c
xorg-server/hw/xwin/winpixmap.c
xorg-server/hw/xwin/winpolyline.c
xorg-server/hw/xwin/winprefs.c
xorg-server/hw/xwin/winprocarg.c
xorg-server/hw/xwin/winregistry.c
xorg-server/hw/xwin/winscrinit.c
xorg-server/hw/xwin/winsetsp.c
xorg-server/hw/xwin/winshaddd.c
xorg-server/hw/xwin/winshadddnl.c
xorg-server/hw/xwin/winshadgdi.c
xorg-server/hw/xwin/wintrayicon.c
xorg-server/hw/xwin/winwin32rootless.c
xorg-server/hw/xwin/winwin32rootlesswindow.c
xorg-server/hw/xwin/winwin32rootlesswndproc.c
xorg-server/hw/xwin/winwindow.c
xorg-server/hw/xwin/winwindow.h
xorg-server/hw/xwin/winwindowswm.c
xorg-server/hw/xwin/winwndproc.c
xorg-server/include/callback.h
xorg-server/include/dixstruct.h
xorg-server/include/misc.h
xorg-server/include/os.h
xorg-server/include/scrnintstr.h
xorg-server/mi/micmap.c
xorg-server/mi/miinitext.c
xorg-server/mi/mioverlay.c
xorg-server/mi/misprite.c
xorg-server/mi/mivaltree.c
xorg-server/mi/miwindow.c
xorg-server/miext/damage/damage.c
xorg-server/miext/rootless/rootlessGC.c
xorg-server/miext/rootless/rootlessWindow.c
xorg-server/os/WaitFor.c
xorg-server/os/access.c
xorg-server/os/connection.c
xorg-server/os/io.c
xorg-server/os/log.c
xorg-server/os/osinit.c
xorg-server/os/utils.c
xorg-server/os/xdmcp.c
xorg-server/os/xprintf.c
xorg-server/os/xstrans.c
xorg-server/render/mipict.c
xorg-server/xkb/xkbActions.c
xorg-server/xkb/xkbInit.c
xorg-server/xkeyboard-config/compat/default.in
Diffstat (limited to 'xorg-server/os/rpcauth.c')
-rw-r--r-- | xorg-server/os/rpcauth.c | 113 |
1 files changed, 55 insertions, 58 deletions
diff --git a/xorg-server/os/rpcauth.c b/xorg-server/os/rpcauth.c index 63b97b675..bd219acfa 100644 --- a/xorg-server/os/rpcauth.c +++ b/xorg-server/os/rpcauth.c @@ -31,7 +31,6 @@ from The Open Group. * Author: Mayank Choudhary, Sun Microsystems */ - #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> #endif @@ -54,29 +53,29 @@ extern bool_t xdr_opaque_auth(XDR *, struct opaque_auth *); static enum auth_stat why; -static char * +static char * authdes_ezdecode(const char *inmsg, int len) { - struct rpc_msg msg; - char cred_area[MAX_AUTH_BYTES]; - char verf_area[MAX_AUTH_BYTES]; - char *temp_inmsg; - struct svc_req r; - bool_t res0, res1; - XDR xdr; - SVCXPRT xprt; + struct rpc_msg msg; + char cred_area[MAX_AUTH_BYTES]; + char verf_area[MAX_AUTH_BYTES]; + char *temp_inmsg; + struct svc_req r; + bool_t res0, res1; + XDR xdr; + SVCXPRT xprt; temp_inmsg = malloc(len); memmove(temp_inmsg, inmsg, len); - memset((char *)&msg, 0, sizeof(msg)); - memset((char *)&r, 0, sizeof(r)); + memset((char *) &msg, 0, sizeof(msg)); + memset((char *) &r, 0, sizeof(r)); memset(cred_area, 0, sizeof(cred_area)); memset(verf_area, 0, sizeof(verf_area)); msg.rm_call.cb_cred.oa_base = cred_area; msg.rm_call.cb_verf.oa_base = verf_area; - why = AUTH_FAILED; + why = AUTH_FAILED; xdrmem_create(&xdr, temp_inmsg, len, XDR_DECODE); if ((r.rq_clntcred = malloc(MAX_AUTH_BYTES)) == NULL) @@ -84,14 +83,14 @@ authdes_ezdecode(const char *inmsg, int len) r.rq_xprt = &xprt; /* decode into msg */ - res0 = xdr_opaque_auth(&xdr, &(msg.rm_call.cb_cred)); + res0 = xdr_opaque_auth(&xdr, &(msg.rm_call.cb_cred)); res1 = xdr_opaque_auth(&xdr, &(msg.rm_call.cb_verf)); - if ( ! (res0 && res1) ) - goto bad2; + if (!(res0 && res1)) + goto bad2; /* do the authentication */ - r.rq_cred = msg.rm_call.cb_cred; /* read by opaque stuff */ + r.rq_cred = msg.rm_call.cb_cred; /* read by opaque stuff */ if (r.rq_cred.oa_flavor != AUTH_DES) { why = AUTH_TOOWEAK; goto bad2; @@ -101,94 +100,92 @@ authdes_ezdecode(const char *inmsg, int len) #else if ((why = _authenticate(&r, &msg)) != AUTH_OK) { #endif - goto bad2; + goto bad2; } - return (((struct authdes_cred *) r.rq_clntcred)->adc_fullname.name); + return (((struct authdes_cred *) r.rq_clntcred)->adc_fullname.name); -bad2: + bad2: free(r.rq_clntcred); -bad1: - return ((char *)0); /* ((struct authdes_cred *) NULL); */ + bad1: + return ((char *) 0); /* ((struct authdes_cred *) NULL); */ } -static XID rpc_id = (XID) ~0L; +static XID rpc_id = (XID) ~0L; static Bool -CheckNetName ( - unsigned char *addr, - short len, - pointer closure -) +CheckNetName(unsigned char *addr, short len, pointer closure) { - return (len == strlen ((char *) closure) && - strncmp ((char *) addr, (char *) closure, len) == 0); + return (len == strlen((char *) closure) && + strncmp((char *) addr, (char *) closure, len) == 0); } -static char rpc_error[MAXNETNAMELEN+50]; +static char rpc_error[MAXNETNAMELEN + 50]; _X_HIDDEN XID -SecureRPCCheck (unsigned short data_length, const char *data, - ClientPtr client, const char **reason) +SecureRPCCheck(unsigned short data_length, const char *data, + ClientPtr client, const char **reason) { char *fullname; - + if (rpc_id == (XID) ~0L) { - *reason = "Secure RPC authorization not initialized"; - } else { - fullname = authdes_ezdecode(data, data_length); - if (fullname == (char *)0) { - snprintf(rpc_error, sizeof(rpc_error), - "Unable to authenticate secure RPC client (why=%d)", why); - *reason = rpc_error; - } else { - if (ForEachHostInFamily (FamilyNetname, CheckNetName, fullname)) - return rpc_id; - snprintf(rpc_error, sizeof(rpc_error), - "Principal \"%s\" is not authorized to connect", fullname); - *reason = rpc_error; - } + *reason = "Secure RPC authorization not initialized"; + } + else { + fullname = authdes_ezdecode(data, data_length); + if (fullname == (char *) 0) { + snprintf(rpc_error, sizeof(rpc_error), + "Unable to authenticate secure RPC client (why=%d)", why); + *reason = rpc_error; + } + else { + if (ForEachHostInFamily(FamilyNetname, CheckNetName, fullname)) + return rpc_id; + snprintf(rpc_error, sizeof(rpc_error), + "Principal \"%s\" is not authorized to connect", fullname); + *reason = rpc_error; + } } return (XID) ~0L; } - + _X_HIDDEN void -SecureRPCInit (void) +SecureRPCInit(void) { if (rpc_id == ~0L) - AddAuthorization (9, "SUN-DES-1", 0, (char *) 0); + AddAuthorization(9, "SUN-DES-1", 0, (char *) 0); } _X_HIDDEN int -SecureRPCAdd (unsigned short data_length, const char *data, XID id) +SecureRPCAdd(unsigned short data_length, const char *data, XID id) { if (data_length) - AddHost ((pointer) 0, FamilyNetname, data_length, data); + AddHost((pointer) 0, FamilyNetname, data_length, data); rpc_id = id; return 1; } _X_HIDDEN int -SecureRPCReset (void) +SecureRPCReset(void) { rpc_id = (XID) ~0L; return 1; } _X_HIDDEN XID -SecureRPCToID (unsigned short data_length, char *data) +SecureRPCToID(unsigned short data_length, char *data) { return rpc_id; } _X_HIDDEN int -SecureRPCFromID (XID id, unsigned short *data_lenp, char **datap) +SecureRPCFromID(XID id, unsigned short *data_lenp, char **datap) { return 0; } _X_HIDDEN int -SecureRPCRemove (unsigned short data_length, const char *data) +SecureRPCRemove(unsigned short data_length, const char *data) { return 0; } -#endif /* SECURE_RPC */ +#endif /* SECURE_RPC */ |