Move Xserver API for security extension to securitysrv.h
This commit is contained in:
		
							parent
							
								
									481d4012e7
								
							
						
					
					
						commit
						a544359465
					
				| 
						 | 
					@ -0,0 +1,133 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 1996, 1998  The Open Group
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission to use, copy, modify, distribute, and sell this software and its
 | 
				
			||||||
 | 
					documentation for any purpose is hereby granted without fee, provided that
 | 
				
			||||||
 | 
					the above copyright notice appear in all copies and that both that
 | 
				
			||||||
 | 
					copyright notice and this permission notice appear in supporting
 | 
				
			||||||
 | 
					documentation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included
 | 
				
			||||||
 | 
					in all copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
				
			||||||
 | 
					OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
				
			||||||
 | 
					IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
 | 
				
			||||||
 | 
					OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 | 
				
			||||||
 | 
					ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | 
				
			||||||
 | 
					OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Except as contained in this notice, the name of The Open Group shall
 | 
				
			||||||
 | 
					not be used in advertising or otherwise to promote the sale, use or
 | 
				
			||||||
 | 
					other dealings in this Software without prior written authorization
 | 
				
			||||||
 | 
					from The Open Group.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Xserver internals for Security extension - moved here from
 | 
				
			||||||
 | 
					   _SECURITY_SERVER section of <X11/extensions/security.h> */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _SECURITY_SRV_H
 | 
				
			||||||
 | 
					#define _SECURITY_SRV_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Allow client side portions of <X11/extensions/security.h> to compile */
 | 
				
			||||||
 | 
					#ifndef Status
 | 
				
			||||||
 | 
					# define Status int
 | 
				
			||||||
 | 
					# define NEED_UNDEF_Status
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef Display
 | 
				
			||||||
 | 
					# define Display void
 | 
				
			||||||
 | 
					# define NEED_UNDEF_Display
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <X11/extensions/security.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef NEED_UNDEF_Status
 | 
				
			||||||
 | 
					# undef Status
 | 
				
			||||||
 | 
					# undef NEED_UNDEF_Status
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef NEED_UNDEF_Display
 | 
				
			||||||
 | 
					# undef Display
 | 
				
			||||||
 | 
					# undef NEED_UNDEF_Display
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "input.h"    /* for DeviceIntPtr */
 | 
				
			||||||
 | 
					#include "property.h" /* for PropertyPtr */
 | 
				
			||||||
 | 
					#include "pixmap.h"   /* for DrawablePtr */
 | 
				
			||||||
 | 
					#include "resource.h" /* for RESTYPE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* resource type to pass in LookupIDByType for authorizations */
 | 
				
			||||||
 | 
					extern RESTYPE SecurityAuthorizationResType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* this is what we store for an authorization */
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    XID id;			/* resource ID */
 | 
				
			||||||
 | 
					    CARD32 timeout;	/* how long to live in seconds after refcnt == 0 */
 | 
				
			||||||
 | 
					    unsigned int trustLevel;	/* trusted/untrusted */
 | 
				
			||||||
 | 
					    XID group;			/* see embedding extension */
 | 
				
			||||||
 | 
					    unsigned int refcnt;	/* how many clients connected with this auth */
 | 
				
			||||||
 | 
					    unsigned int secondsRemaining; /* overflow time amount for >49 days */
 | 
				
			||||||
 | 
					    OsTimerPtr timer;		/* timer for this auth */
 | 
				
			||||||
 | 
					    struct _OtherClients *eventClients; /* clients wanting events */
 | 
				
			||||||
 | 
					} SecurityAuthorizationRec, *SecurityAuthorizationPtr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The following callback is called when a GenerateAuthorization request
 | 
				
			||||||
 | 
					 * is processed to sanity check the group argument.  The call data will
 | 
				
			||||||
 | 
					 * be a pointer to a SecurityValidateGroupInfoRec (below).  
 | 
				
			||||||
 | 
					 * Functions registered on this callback are expected to examine the
 | 
				
			||||||
 | 
					 * group and set the valid field to TRUE if they recognize the group as a
 | 
				
			||||||
 | 
					 * legitimate group.  If they don't recognize it, they should not change the
 | 
				
			||||||
 | 
					 * valid field.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern CallbackListPtr SecurityValidateGroupCallback;
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    XID group;	/* the group that was sent in GenerateAuthorization */
 | 
				
			||||||
 | 
					    Bool valid; /* did anyone recognize it? if so, set to TRUE */
 | 
				
			||||||
 | 
					} SecurityValidateGroupInfoRec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Proc vectors for untrusted clients, swapped and unswapped versions.
 | 
				
			||||||
 | 
					 * These are the same as the normal proc vectors except that extensions
 | 
				
			||||||
 | 
					 * that haven't declared themselves secure will have ProcBadRequest plugged
 | 
				
			||||||
 | 
					 * in for their major opcode dispatcher.  This prevents untrusted clients
 | 
				
			||||||
 | 
					 * from guessing extension major opcodes and using the extension even though
 | 
				
			||||||
 | 
					 * the extension can't be listed or queried.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern int (*UntrustedProcVector[256])(ClientPtr client);
 | 
				
			||||||
 | 
					extern int (*SwappedUntrustedProcVector[256])(ClientPtr client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern Bool SecurityCheckDeviceAccess(ClientPtr client, DeviceIntPtr dev,
 | 
				
			||||||
 | 
								       Bool fromRequest);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern void SecurityAudit(char *format, ...);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int XSecurityOptions(int argc, char **argv, int i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Give this value or higher to the -audit option to get security messages */
 | 
				
			||||||
 | 
					#define SECURITY_AUDIT_LEVEL 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern void SecurityCensorImage(
 | 
				
			||||||
 | 
					    ClientPtr client,
 | 
				
			||||||
 | 
					    RegionPtr pVisibleRegion,
 | 
				
			||||||
 | 
					    long widthBytesLine,
 | 
				
			||||||
 | 
					    DrawablePtr pDraw,
 | 
				
			||||||
 | 
					    int x, int y, int w, int h,
 | 
				
			||||||
 | 
					    unsigned int format,
 | 
				
			||||||
 | 
					    char * pBuf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SecurityAllowOperation  0
 | 
				
			||||||
 | 
					#define SecurityIgnoreOperation 1
 | 
				
			||||||
 | 
					#define SecurityErrorOperation  2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern char
 | 
				
			||||||
 | 
					SecurityCheckPropertyAccess(
 | 
				
			||||||
 | 
					    ClientPtr client,
 | 
				
			||||||
 | 
					    WindowPtr pWin,
 | 
				
			||||||
 | 
					    ATOM  propertyName,
 | 
				
			||||||
 | 
					    Mask access_mode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SECURITY_POLICY_FILE_VERSION "version-1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern char **SecurityGetSitePolicyStrings(int *n);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* _SECURITY_SRV_H */
 | 
				
			||||||
		Loading…
	
		Reference in New Issue