--- a/open-src/xserver/xorg/XaceHook-initializers.patch Wed Dec 02 21:38:00 2009 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-From 36dc66ae79b6e1cbe0a23587e32aebb68365b0d0 Mon Sep 17 00:00:00 2001
-From: Michael Lorenz <[email protected]>
-Date: Tue, 7 Jul 2009 20:21:39 -0400
-Subject: [PATCH] The way XaceHook() mixes struct initializers and va_arg() is not portable and
- gives bogus data on sparc and probably others leading to a crash.
-
-Fix:
-Don't use initializers, instead set each member directly to enforce order.
-
-Signed-off-by: Eamon Walsh <[email protected]>
----
- Xext/xace.c | 116 +++++++++++++++++++++++++++--------------------------------
- 1 files changed, 53 insertions(+), 63 deletions(-)
-
-diff --git a/Xext/xace.c b/Xext/xace.c
-index 6eaba6d..5b9a840 100644
---- a/Xext/xace.c
-+++ b/Xext/xace.c
-@@ -100,114 +100,104 @@ int XaceHook(int hook, ...)
- switch (hook)
- {
- case XACE_RESOURCE_ACCESS: {
-- XaceResourceAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, XID),
-- va_arg(ap, RESTYPE),
-- va_arg(ap, pointer),
-- va_arg(ap, RESTYPE),
-- va_arg(ap, pointer),
-- va_arg(ap, Mask),
-- Success /* default allow */
-- };
-+ XaceResourceAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.id = va_arg(ap, XID);
-+ rec.rtype = va_arg(ap, RESTYPE);
-+ rec.res = va_arg(ap, pointer);
-+ rec.ptype = va_arg(ap, RESTYPE);
-+ rec.parent = va_arg(ap, pointer);
-+ rec.access_mode = va_arg(ap, Mask);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_DEVICE_ACCESS: {
-- XaceDeviceAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, DeviceIntPtr),
-- va_arg(ap, Mask),
-- Success /* default allow */
-- };
-+ XaceDeviceAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.dev = va_arg(ap, DeviceIntPtr);
-+ rec.access_mode = va_arg(ap, Mask);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_SEND_ACCESS: {
-- XaceSendAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, DeviceIntPtr),
-- va_arg(ap, WindowPtr),
-- va_arg(ap, xEventPtr),
-- va_arg(ap, int),
-- Success /* default allow */
-- };
-+ XaceSendAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.dev = va_arg(ap, DeviceIntPtr);
-+ rec.pWin = va_arg(ap, WindowPtr);
-+ rec.events = va_arg(ap, xEventPtr);
-+ rec.count = va_arg(ap, int);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_RECEIVE_ACCESS: {
-- XaceReceiveAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, WindowPtr),
-- va_arg(ap, xEventPtr),
-- va_arg(ap, int),
-- Success /* default allow */
-- };
-+ XaceReceiveAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.pWin = va_arg(ap, WindowPtr);
-+ rec.events = va_arg(ap, xEventPtr);
-+ rec.count = va_arg(ap, int);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_CLIENT_ACCESS: {
-- XaceClientAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, ClientPtr),
-- va_arg(ap, Mask),
-- Success /* default allow */
-- };
-+ XaceClientAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.target = va_arg(ap, ClientPtr);
-+ rec.access_mode = va_arg(ap, Mask);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_EXT_ACCESS: {
-- XaceExtAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, ExtensionEntry*),
-- DixGetAttrAccess,
-- Success /* default allow */
-- };
-+ XaceExtAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.ext = va_arg(ap, ExtensionEntry*);
-+ rec.access_mode = DixGetAttrAccess;
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_SERVER_ACCESS: {
-- XaceServerAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, Mask),
-- Success /* default allow */
-- };
-+ XaceServerAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.access_mode = va_arg(ap, Mask);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_SCREEN_ACCESS:
- case XACE_SCREENSAVER_ACCESS: {
-- XaceScreenAccessRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, ScreenPtr),
-- va_arg(ap, Mask),
-- Success /* default allow */
-- };
-+ XaceScreenAccessRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.screen = va_arg(ap, ScreenPtr);
-+ rec.access_mode = va_arg(ap, Mask);
-+ rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
- break;
- }
- case XACE_AUTH_AVAIL: {
-- XaceAuthAvailRec rec = {
-- va_arg(ap, ClientPtr),
-- va_arg(ap, XID)
-- };
-+ XaceAuthAvailRec rec;
-+ rec.client = va_arg(ap, ClientPtr);
-+ rec.authId = va_arg(ap, XID);
- calldata = &rec;
- break;
- }
- case XACE_KEY_AVAIL: {
-- XaceKeyAvailRec rec = {
-- va_arg(ap, xEventPtr),
-- va_arg(ap, DeviceIntPtr),
-- va_arg(ap, int)
-- };
-+ XaceKeyAvailRec rec;
-+ rec.event = va_arg(ap, xEventPtr);
-+ rec.keybd = va_arg(ap, DeviceIntPtr);
-+ rec.count = va_arg(ap, int);
- calldata = &rec;
- break;
- }
---
-1.5.6.5
-