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/auth.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/auth.c')
-rw-r--r-- | xorg-server/os/auth.c | 323 |
1 files changed, 154 insertions, 169 deletions
diff --git a/xorg-server/os/auth.c b/xorg-server/os/auth.c index 12a44b4d6..b95786bee 100644 --- a/xorg-server/os/auth.c +++ b/xorg-server/os/auth.c @@ -35,60 +35,60 @@ from The Open Group. #include <dix-config.h> #endif -# include <X11/X.h> -# include <X11/Xauth.h> -# include "misc.h" -# include "osdep.h" -# include "dixstruct.h" -# include <sys/types.h> -# include <sys/stat.h> +#include <X11/X.h> +#include <X11/Xauth.h> +#include "misc.h" +#include "osdep.h" +#include "dixstruct.h" +#include <sys/types.h> +#include <sys/stat.h> #ifdef WIN32 #include <X11/Xw32defs.h> #endif struct protocol { - unsigned short name_length; - const char *name; - AuthAddCFunc Add; /* new authorization data */ - AuthCheckFunc Check; /* verify client authorization data */ - AuthRstCFunc Reset; /* delete all authorization data entries */ - AuthToIDFunc ToID; /* convert cookie to ID */ - AuthFromIDFunc FromID; /* convert ID to cookie */ - AuthRemCFunc Remove; /* remove a specific cookie */ + unsigned short name_length; + const char *name; + AuthAddCFunc Add; /* new authorization data */ + AuthCheckFunc Check; /* verify client authorization data */ + AuthRstCFunc Reset; /* delete all authorization data entries */ + AuthToIDFunc ToID; /* convert cookie to ID */ + AuthFromIDFunc FromID; /* convert ID to cookie */ + AuthRemCFunc Remove; /* remove a specific cookie */ #ifdef XCSECURITY - AuthGenCFunc Generate; + AuthGenCFunc Generate; #endif }; -static struct protocol protocols[] = { -{ (unsigned short) 18, "MIT-MAGIC-COOKIE-1", - MitAddCookie, MitCheckCookie, MitResetCookie, - MitToID, MitFromID, MitRemoveCookie, +static struct protocol protocols[] = { + {(unsigned short) 18, "MIT-MAGIC-COOKIE-1", + MitAddCookie, MitCheckCookie, MitResetCookie, + MitToID, MitFromID, MitRemoveCookie, #ifdef XCSECURITY - MitGenerateCookie + MitGenerateCookie #endif -}, + }, #ifdef HASXDMAUTH -{ (unsigned short) 19, "XDM-AUTHORIZATION-1", - XdmAddCookie, XdmCheckCookie, XdmResetCookie, - XdmToID, XdmFromID, XdmRemoveCookie, + {(unsigned short) 19, "XDM-AUTHORIZATION-1", + XdmAddCookie, XdmCheckCookie, XdmResetCookie, + XdmToID, XdmFromID, XdmRemoveCookie, #ifdef XCSECURITY - NULL + NULL #endif -}, + }, #endif #ifdef SECURE_RPC -{ (unsigned short) 9, "SUN-DES-1", - SecureRPCAdd, SecureRPCCheck, SecureRPCReset, - SecureRPCToID, SecureRPCFromID,SecureRPCRemove, + {(unsigned short) 9, "SUN-DES-1", + SecureRPCAdd, SecureRPCCheck, SecureRPCReset, + SecureRPCToID, SecureRPCFromID, SecureRPCRemove, #ifdef XCSECURITY - NULL + NULL #endif -}, + }, #endif }; -# define NUM_AUTHORIZATION (sizeof (protocols) /\ +#define NUM_AUTHORIZATION (sizeof (protocols) /\ sizeof (struct protocol)) /* @@ -96,47 +96,46 @@ static struct protocol protocols[] = { * specified authorization file */ -static char *authorization_file = (char *)NULL; +static char *authorization_file = (char *) NULL; static Bool ShouldLoadAuth = TRUE; void -InitAuthorization (char *file_name) +InitAuthorization(char *file_name) { authorization_file = file_name; } static int -LoadAuthorization (void) +LoadAuthorization(void) { - FILE *f; - Xauth *auth; - int i; - int count = 0; + FILE *f; + Xauth *auth; + int i; + int count = 0; ShouldLoadAuth = FALSE; if (!authorization_file) - return 0; + return 0; - f = Fopen (authorization_file, "r"); + f = Fopen(authorization_file, "r"); if (!f) - return -1; - - while ((auth = XauReadAuth (f)) != 0) { - for (i = 0; i < NUM_AUTHORIZATION; i++) { - if (protocols[i].name_length == auth->name_length && - memcmp (protocols[i].name, auth->name, (int) auth->name_length) == 0 && - protocols[i].Add) - { - ++count; - (*protocols[i].Add) (auth->data_length, auth->data, - FakeClientID(0)); - } - } - XauDisposeAuth (auth); + return -1; + + while ((auth = XauReadAuth(f)) != 0) { + for (i = 0; i < NUM_AUTHORIZATION; i++) { + if (protocols[i].name_length == auth->name_length && + memcmp(protocols[i].name, auth->name, + (int) auth->name_length) == 0 && protocols[i].Add) { + ++count; + (*protocols[i].Add) (auth->data_length, auth->data, + FakeClientID(0)); + } + } + XauDisposeAuth(auth); } - Fclose (f); + Fclose(f); return count; } @@ -146,146 +145,134 @@ LoadAuthorization (void) * schemes supported by the display */ void -RegisterAuthorizations (void) +RegisterAuthorizations(void) { - int i; + int i; for (i = 0; i < NUM_AUTHORIZATION; i++) - XdmcpRegisterAuthorization (protocols[i].name, - (int)protocols[i].name_length); + XdmcpRegisterAuthorization(protocols[i].name, + (int) protocols[i].name_length); } #endif XID -CheckAuthorization ( - unsigned int name_length, - const char *name, - unsigned int data_length, - const char *data, - ClientPtr client, - const char **reason) /* failure message. NULL for default msg */ -{ - int i; +CheckAuthorization(unsigned int name_length, + const char *name, + unsigned int data_length, + const char *data, ClientPtr client, const char **reason) +{ /* failure message. NULL for default msg */ + int i; struct stat buf; static time_t lastmod = 0; static Bool loaded = FALSE; - if (!authorization_file || stat(authorization_file, &buf)) - { - if (lastmod != 0) { - lastmod = 0; - ShouldLoadAuth = TRUE; /* stat lost, so force reload */ - } + if (!authorization_file || stat(authorization_file, &buf)) { + if (lastmod != 0) { + lastmod = 0; + ShouldLoadAuth = TRUE; /* stat lost, so force reload */ + } } - else if (buf.st_mtime > lastmod) - { - lastmod = buf.st_mtime; - ShouldLoadAuth = TRUE; + else if (buf.st_mtime > lastmod) { + lastmod = buf.st_mtime; + ShouldLoadAuth = TRUE; } - if (ShouldLoadAuth) - { - int loadauth = LoadAuthorization(); - - /* - * If the authorization file has at least one entry for this server, - * disable local host access. (loadauth > 0) - * - * If there are zero entries (either initially or when the - * authorization file is later reloaded), or if a valid - * authorization file was never loaded, enable local host access. - * (loadauth == 0 || !loaded) - * - * If the authorization file was loaded initially (with valid - * entries for this server), and reloading it later fails, don't - * change anything. (loadauth == -1 && loaded) - */ - - if (loadauth > 0) - { - DisableLocalHost(); /* got at least one */ - loaded = TRUE; - } - else if (loadauth == 0 || !loaded) - EnableLocalHost (); + if (ShouldLoadAuth) { + int loadauth = LoadAuthorization(); + + /* + * If the authorization file has at least one entry for this server, + * disable local host access. (loadauth > 0) + * + * If there are zero entries (either initially or when the + * authorization file is later reloaded), or if a valid + * authorization file was never loaded, enable local host access. + * (loadauth == 0 || !loaded) + * + * If the authorization file was loaded initially (with valid + * entries for this server), and reloading it later fails, don't + * change anything. (loadauth == -1 && loaded) + */ + + if (loadauth > 0) { + DisableLocalHost(); /* got at least one */ + loaded = TRUE; + } + else if (loadauth == 0 || !loaded) + EnableLocalHost(); } if (name_length) { - for (i = 0; i < NUM_AUTHORIZATION; i++) { - if (protocols[i].name_length == name_length && - memcmp (protocols[i].name, name, (int) name_length) == 0) - { - return (*protocols[i].Check) (data_length, data, client, reason); - } - *reason = "Protocol not supported by server\n"; - } - } else *reason = "No protocol specified\n"; + for (i = 0; i < NUM_AUTHORIZATION; i++) { + if (protocols[i].name_length == name_length && + memcmp(protocols[i].name, name, (int) name_length) == 0) { + return (*protocols[i].Check) (data_length, data, client, + reason); + } + *reason = "Protocol not supported by server\n"; + } + } + else + *reason = "No protocol specified\n"; return (XID) ~0L; } void -ResetAuthorization (void) +ResetAuthorization(void) { - int i; + int i; for (i = 0; i < NUM_AUTHORIZATION; i++) - if (protocols[i].Reset) - (*protocols[i].Reset)(); + if (protocols[i].Reset) + (*protocols[i].Reset) (); ShouldLoadAuth = TRUE; } int -AuthorizationFromID ( - XID id, - unsigned short *name_lenp, - const char **namep, - unsigned short *data_lenp, - char **datap) +AuthorizationFromID(XID id, + unsigned short *name_lenp, + const char **namep, unsigned short *data_lenp, char **datap) { - int i; + int i; for (i = 0; i < NUM_AUTHORIZATION; i++) { - if (protocols[i].FromID && - (*protocols[i].FromID) (id, data_lenp, datap)) { - *name_lenp = protocols[i].name_length; - *namep = protocols[i].name; - return 1; - } + if (protocols[i].FromID && + (*protocols[i].FromID) (id, data_lenp, datap)) { + *name_lenp = protocols[i].name_length; + *namep = protocols[i].name; + return 1; + } } return 0; } int -RemoveAuthorization ( - unsigned short name_length, - const char *name, - unsigned short data_length, - const char *data) +RemoveAuthorization(unsigned short name_length, + const char *name, + unsigned short data_length, const char *data) { - int i; + int i; for (i = 0; i < NUM_AUTHORIZATION; i++) { - if (protocols[i].name_length == name_length && - memcmp (protocols[i].name, name, (int) name_length) == 0 && - protocols[i].Remove) - { - return (*protocols[i].Remove) (data_length, data); - } + if (protocols[i].name_length == name_length && + memcmp(protocols[i].name, name, (int) name_length) == 0 && + protocols[i].Remove) { + return (*protocols[i].Remove) (data_length, data); + } } return 0; } int -AddAuthorization (unsigned name_length, const char *name, - unsigned data_length, char *data) +AddAuthorization(unsigned name_length, const char *name, + unsigned data_length, char *data) { - int i; + int i; for (i = 0; i < NUM_AUTHORIZATION; i++) { - if (protocols[i].name_length == name_length && - memcmp (protocols[i].name, name, (int) name_length) == 0 && - protocols[i].Add) - { - return (*protocols[i].Add) (data_length, data, FakeClientID(0)); - } + if (protocols[i].name_length == name_length && + memcmp(protocols[i].name, name, (int) name_length) == 0 && + protocols[i].Add) { + return (*protocols[i].Add) (data_length, data, FakeClientID(0)); + } } return 0; } @@ -293,30 +280,28 @@ AddAuthorization (unsigned name_length, const char *name, #ifdef XCSECURITY XID -GenerateAuthorization( - unsigned name_length, - const char *name, - unsigned data_length, - const char *data, - unsigned *data_length_return, - char **data_return) +GenerateAuthorization(unsigned name_length, + const char *name, + unsigned data_length, + const char *data, + unsigned *data_length_return, char **data_return) { - int i; + int i; for (i = 0; i < NUM_AUTHORIZATION; i++) { - if (protocols[i].name_length == name_length && - memcmp (protocols[i].name, name, (int) name_length) == 0 && - protocols[i].Generate) - { - return (*protocols[i].Generate) (data_length, data, - FakeClientID(0), data_length_return, data_return); - } + if (protocols[i].name_length == name_length && + memcmp(protocols[i].name, name, (int) name_length) == 0 && + protocols[i].Generate) { + return (*protocols[i].Generate) (data_length, data, + FakeClientID(0), + data_length_return, data_return); + } } return -1; } void -GenerateRandomData (int len, char *buf) +GenerateRandomData(int len, char *buf) { #ifdef _MSC_VER static HANDLE hAdvApi32; @@ -337,4 +322,4 @@ GenerateRandomData (int len, char *buf) #endif } -#endif /* XCSECURITY */ +#endif /* XCSECURITY */ |