Author: fabbione Date: 2004-11-19 04:56:53 -0500 (Fri, 19 Nov 2004) New Revision: 2034
Modified: branches/ubuntu/debian/changelog branches/ubuntu/debian/patches/000_stolen_from_x.org.diff Log: Import security related fixes from stable/security branch. Modified: branches/ubuntu/debian/changelog =================================================================== --- branches/ubuntu/debian/changelog 2004-11-19 09:52:23 UTC (rev 2033) +++ branches/ubuntu/debian/changelog 2004-11-19 09:56:53 UTC (rev 2034) @@ -1,3 +1,17 @@ +xfree86 (4.3.0.dfsg.1-6ubuntu26) warty-security; urgency=low + + Changes by Daniel Stone: + + * Security upload: further fixes to the libXpm issues reported in + CAN-2004-0687 and CAN-2004-0688, and fixed in 4.3.0.dfsg.1-6ubuntu18. + Similar integer overflow vulnerabilities have discovered and fixed. The + CAN numbers remain the same, as it is the same vulnerabilities that are + being fixed. + * debian/patches/000_stolen_from_x.org: + Updated with fixes for new vulnerabilities. + + -- Daniel Stone <[EMAIL PROTECTED]> Mon, 15 Nov 2004 10:20:11 +0100 + xfree86 (4.3.0.dfsg.1-6ubuntu25) warty; urgency=low Imported from Debian trunk: Modified: branches/ubuntu/debian/patches/000_stolen_from_x.org.diff =================================================================== --- branches/ubuntu/debian/patches/000_stolen_from_x.org.diff 2004-11-19 09:52:23 UTC (rev 2033) +++ branches/ubuntu/debian/patches/000_stolen_from_x.org.diff 2004-11-19 09:56:53 UTC (rev 2034) @@ -8,7 +8,10 @@ not contain a valid mode. Also merge libXpm security fix from X11R6.8.1, fixing multiple integer -overflows (CAN-2004-0687) and stack overflows (CAN-2004-0688). +overflows (CAN-2004-0687) and stack overflows (CAN-2004-0688). This patch has +since been updated with the libXpm security fix proposed for X11R6.8.2, which +updates the previous patches to fix more vulnerabilities. The CAN numbers +remain the same. diff -urN xc.orig/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c xc/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c --- xc.orig/programs/Xserver/hw/xfree86/drivers/chips/ct_driver.c 2004-09-15 10:58:47.014750536 +1000 @@ -99,9 +102,218 @@ ErrorF("bomb 6\n"); return (FALSE); } +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/common/xf86str.h xc/programs/Xserver/hw/xfree86/common/xf86str.h +--- xc.orig/programs/Xserver/hw/xfree86/common/xf86str.h 2004-09-15 10:05:46.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/common/xf86str.h 2004-09-15 10:14:05.000000000 +0000 +@@ -16,6 +16,7 @@ + #include "input.h" + #include "scrnintstr.h" + #include "pixmapstr.h" ++#include "colormapst.h" + #include "xf86Module.h" + #include "xf86Opt.h" + #include "xf86Pci.h" +@@ -747,7 +748,7 @@ + typedef Bool xf86EnterVTProc (int, int); + typedef void xf86LeaveVTProc (int, int); + typedef void xf86FreeScreenProc (int, int); +-typedef int xf86ValidModeProc (int, DisplayModePtr, Bool, int); ++typedef ModeStatus xf86ValidModeProc (int, DisplayModePtr, Bool, int); + typedef void xf86EnableDisableFBAccessProc(int, Bool); + typedef int xf86SetDGAModeProc (int, int, DGADevicePtr); + typedef int xf86ChangeGammaProc (int, Gamma); +@@ -755,6 +756,8 @@ + typedef Bool xf86PMEventProc (int, pmEvent, Bool); + typedef int xf86HandleMessageProc (int, const char*, const char*, char**); + ++typedef void xf86LoadPaletteProc (ScrnInfoPtr, int, int *, LOCO *, VisualPtr); ++ + /* + * ScrnInfoRec + * +@@ -905,6 +908,7 @@ + xf86PointerMovedProc *PointerMoved; + xf86PMEventProc *PMEvent; + xf86HandleMessageProc *HandleMessage; ++ xf86LoadPaletteProc *LoadPalette; + + /* + * This can be used when the minor ABI version is incremented. +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c +--- xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c 2004-09-15 10:05:46.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c 2004-09-15 10:09:57.000000000 +0000 +@@ -873,3 +873,18 @@ + + return TRUE; + } ++ ++xf86SwitchModeProc * ++fbdevHWSwitchModeWeak(void) { return fbdevHWSwitchMode; } ++ ++xf86AdjustFrameProc * ++fbdevHWAdjustFrameWeak(void) { return fbdevHWAdjustFrame; } ++ ++xf86LeaveVTProc * ++fbdevHWLeaveVTWeak(void) { return fbdevHWLeaveVT; } ++ ++xf86ValidModeProc * ++fbdevHWValidModeWeak(void) { return fbdevHWValidMode; } ++ ++xf86LoadPaletteProc * ++fbdevHWLoadPaletteWeak(void) { return fbdevHWLoadPalette; } +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h +--- xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h 2001-10-01 13:44:12.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h 2004-09-15 10:09:57.000000000 +0000 +@@ -49,4 +49,10 @@ + + Bool fbdevHWSaveScreen(ScreenPtr pScreen, int mode); + ++xf86SwitchModeProc *fbdevHWSwitchModeWeak(void); ++xf86AdjustFrameProc *fbdevHWAdjustFrameWeak(void); ++xf86LeaveVTProc *fbdevHWLeaveVTWeak(void); ++xf86ValidModeProc *fbdevHWValidModeWeak(void); ++xf86LoadPaletteProc *fbdevHWLoadPaletteWeak(void); ++ + #endif +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c +--- xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c 2001-10-28 03:33:55.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c 2004-09-15 10:09:57.000000000 +0000 +@@ -168,3 +168,18 @@ + { + return FALSE; + } ++ ++xf86SwitchModeProc * ++fbdevHWSwitchModeWeak(void) { return fbdevHWSwitchMode; } ++ ++xf86AdjustFrameProc * ++fbdevHWAdjustFrameWeak(void) { return fbdevHWAdjustFrame; } ++ ++xf86LeaveVTProc * ++fbdevHWLeaveVTWeak(void) { return fbdevHWLeaveVT; } ++ ++xf86ValidModeProc * ++fbdevHWValidModeWeak(void) { return fbdevHWValidMode; } ++ ++xf86LoadPaletteProc * ++fbdevHWLoadPaletteWeak(void) { return fbdevHWLoadPalette; } +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaaFallback.c xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c +--- xc.orig/programs/Xserver/hw/xfree86/xaa/xaaFallback.c 1999-05-30 03:03:31.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c 2004-09-15 10:09:57.000000000 +0000 +@@ -1,4 +1,4 @@ +-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c,v 1.5 1999/05/30 03:03:31 dawes Exp $ */ ++/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c,v 1.4 1999/03/14 11:18:09 dawes Exp $ */ + + #include "misc.h" + #include "xf86.h" +@@ -347,6 +347,7 @@ + {NULL} /* devPrivate */ + }; + +- +- +- ++GCOps *XAAGetFallbackOps(void) ++{ ++ return &XAAFallbackOps; ++} +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaaROP.c xc/programs/Xserver/hw/xfree86/xaa/xaaROP.c +--- xc.orig/programs/Xserver/hw/xfree86/xaa/xaaROP.c 2000-09-28 20:48:01.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaaROP.c 2004-09-15 10:09:57.000000000 +0000 +@@ -1,4 +1,4 @@ +-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaROP.c,v 1.2 2000/09/28 20:48:01 mvojkovi Exp $ */ ++/* $XFree86$ */ + + #include "X.h" + #include "misc.h" +@@ -94,6 +94,25 @@ + ROP_DPo + }; + ++int XAAGetCopyROP(int i) ++{ ++ return XAACopyROP[i]; ++} ++ ++int XAAGetCopyROP_PM(int i) ++{ ++ return XAACopyROP_PM[i]; ++} ++ ++int XAAGetPatternROP(int i) ++{ ++ return XAAPatternROP[i]; ++} ++ ++int XAAGetPatternROP_PM(int i) ++{ ++ return XAAPatternROP_PM[i]; ++} + + int + XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop) +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaalocal.h xc/programs/Xserver/hw/xfree86/xaa/xaalocal.h +--- xc.orig/programs/Xserver/hw/xfree86/xaa/xaalocal.h 2003-02-17 16:08:29.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaalocal.h 2004-09-15 10:09:57.000000000 +0000 +@@ -1626,6 +1626,7 @@ + + + extern GCOps XAAFallbackOps; ++extern GCOps *XAAGetFallbackOps(void); + extern GCFuncs XAAGCFuncs; + extern int XAAScreenIndex; + extern int XAAGCIndex; +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaarop.h xc/programs/Xserver/hw/xfree86/xaa/xaarop.h +--- xc.orig/programs/Xserver/hw/xfree86/xaa/xaarop.h 1999-03-21 07:35:31.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/xaa/xaarop.h 2004-09-15 10:09:57.000000000 +0000 +@@ -1,4 +1,4 @@ +-/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaarop.h,v 1.1 1999/03/21 07:35:31 dawes Exp $ */ ++/* $XFree86$ */ + + /* + +@@ -299,9 +299,15 @@ + int XAAHelpSolidROP(ScrnInfoPtr pScrn, int *fg, int pm, int *rop); + int XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop); + ++/* XXX These four should be static, but it breaks the 6.7.0 ABI. */ + extern int XAACopyROP[16]; + extern int XAACopyROP_PM[16]; + extern int XAAPatternROP[16]; + extern int XAAPatternROP_PM[16]; + ++extern int XAAGetCopyROP(int i); ++extern int XAAGetCopyROP_PM(int i); ++extern int XAAGetPatternROP(int i); ++extern int XAAGetPatternROP_PM(int i); ++ + #endif /* _XAAROP_H */ +diff -Naurd xc.orig/programs/Xserver/hw/xfree86/input/keyboard/kbd.c xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c +--- xc.orig/programs/Xserver/hw/xfree86/input/keyboard/kbd.c 2003-02-17 16:08:29.000000000 +0000 ++++ xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c 2004-09-27 07:46:15.000000000 +0000 +@@ -573,6 +573,19 @@ + return; + } + ++#ifndef __sparc64__ ++ /* ++ * PC keyboards generate separate key codes for ++ * Alt+Print and Control+Pause but in the X keyboard model ++ * they need to get the same key code as the base key on the same ++ * physical keyboard key. ++ */ ++ if (scanCode == KEY_SysReqest) ++ scanCode = KEY_Print; ++ else if (scanCode == KEY_Break) ++ scanCode = KEY_Pause; ++#endif ++ + /* + * Now map the scancodes to real X-keycodes ... + */ diff -urN xc.orig/extras/Xpm/lib/Attrib.c xc/extras/Xpm/lib/Attrib.c ---- xc.orig/extras/Xpm/lib/Attrib.c 1999-01-12 00:23:09.000000000 +1100 -+++ xc/extras/Xpm/lib/Attrib.c 2004-09-15 11:00:13.481605576 +1000 +--- xc.orig/extras/Xpm/lib/Attrib.c 2004-11-15 10:46:11.439158200 +0100 ++++ xc/extras/Xpm/lib/Attrib.c 2004-11-15 11:07:53.054282624 +0100 @@ -35,7 +35,7 @@ #include "XpmI.h" @@ -129,8 +341,8 @@ if (!colorTable) { *oldct = NULL; diff -urN xc.orig/extras/Xpm/lib/CrDatFrI.c xc/extras/Xpm/lib/CrDatFrI.c ---- xc.orig/extras/Xpm/lib/CrDatFrI.c 2001-10-28 14:32:09.000000000 +1100 -+++ xc/extras/Xpm/lib/CrDatFrI.c 2004-09-15 11:00:13.482605424 +1000 +--- xc.orig/extras/Xpm/lib/CrDatFrI.c 2004-11-15 10:46:11.442157744 +0100 ++++ xc/extras/Xpm/lib/CrDatFrI.c 2004-11-15 11:07:53.054282624 +0100 @@ -124,6 +124,8 @@ */ header_nlines = 1 + image->ncolors; @@ -141,8 +353,8 @@ if (!header) return (XpmNoMemory); diff -urN xc.orig/extras/Xpm/lib/WrFFrI.c xc/extras/Xpm/lib/WrFFrI.c ---- xc.orig/extras/Xpm/lib/WrFFrI.c 2001-10-28 14:32:09.000000000 +1100 -+++ xc/extras/Xpm/lib/WrFFrI.c 2004-09-15 11:00:13.499602840 +1000 +--- xc.orig/extras/Xpm/lib/WrFFrI.c 2004-11-15 10:46:11.449156680 +0100 ++++ xc/extras/Xpm/lib/WrFFrI.c 2004-11-15 11:07:53.055282472 +0100 @@ -248,6 +248,8 @@ unsigned int x, y, h; @@ -153,8 +365,8 @@ if (!buf) return (XpmNoMemory); diff -urN xc.orig/extras/Xpm/lib/XpmI.h xc/extras/Xpm/lib/XpmI.h ---- xc.orig/extras/Xpm/lib/XpmI.h 2002-01-08 06:40:23.000000000 +1100 -+++ xc/extras/Xpm/lib/XpmI.h 2004-09-15 11:00:13.506601776 +1000 +--- xc.orig/extras/Xpm/lib/XpmI.h 2004-11-15 10:46:11.452156224 +0100 ++++ xc/extras/Xpm/lib/XpmI.h 2004-11-15 11:07:53.055282472 +0100 @@ -85,6 +85,18 @@ boundCheckingCalloc((long)(nelem),(long) (elsize)) #endif @@ -188,8 +400,8 @@ } xpmHashTable; diff -urN xc.orig/extras/Xpm/lib/create.c xc/extras/Xpm/lib/create.c ---- xc.orig/extras/Xpm/lib/create.c 2002-01-08 06:40:49.000000000 +1100 -+++ xc/extras/Xpm/lib/create.c 2004-09-15 11:00:13.522599344 +1000 +--- xc.orig/extras/Xpm/lib/create.c 2004-11-15 10:46:11.459155160 +0100 ++++ xc/extras/Xpm/lib/create.c 2004-11-15 11:07:53.057282168 +0100 @@ -1,3 +1,4 @@ +/* $XdotOrg: pre-CVS proposed fix for CESA-2004-003 alanc 7/25/2004 $ */ /* @@ -245,8 +457,8 @@ if (USE_HASHTABLE) { xpmHashAtom *slot; diff -urN xc.orig/extras/Xpm/lib/data.c xc/extras/Xpm/lib/data.c ---- xc.orig/extras/Xpm/lib/data.c 2002-01-08 06:40:49.000000000 +1100 -+++ xc/extras/Xpm/lib/data.c 2004-09-15 11:00:13.532597824 +1000 +--- xc.orig/extras/Xpm/lib/data.c 2004-11-15 10:46:11.460155008 +0100 ++++ xc/extras/Xpm/lib/data.c 2004-11-15 11:07:53.058282016 +0100 @@ -375,7 +375,7 @@ { if (!data->type) @@ -257,8 +469,8 @@ strncpy(*cmt, data->Comment, data->CommentLength); (*cmt)[data->CommentLength] = '\0'; diff -urN xc.orig/extras/Xpm/lib/hashtab.c xc/extras/Xpm/lib/hashtab.c ---- xc.orig/extras/Xpm/lib/hashtab.c 1999-01-12 00:23:11.000000000 +1100 -+++ xc/extras/Xpm/lib/hashtab.c 2004-09-15 11:00:13.533597672 +1000 +--- xc.orig/extras/Xpm/lib/hashtab.c 2004-11-15 10:46:11.461154856 +0100 ++++ xc/extras/Xpm/lib/hashtab.c 2004-11-15 11:07:53.058282016 +0100 @@ -135,7 +135,7 @@ xpmHashTable *table; { @@ -287,8 +499,8 @@ if (!atomTable) return (XpmNoMemory); diff -urN xc.orig/extras/Xpm/lib/parse.c xc/extras/Xpm/lib/parse.c ---- xc.orig/extras/Xpm/lib/parse.c 2001-10-28 14:32:10.000000000 +1100 -+++ xc/extras/Xpm/lib/parse.c 2004-09-15 11:00:13.541596456 +1000 +--- xc.orig/extras/Xpm/lib/parse.c 2004-11-15 10:46:11.464154400 +0100 ++++ xc/extras/Xpm/lib/parse.c 2004-11-15 11:07:53.059281864 +0100 @@ -1,3 +1,4 @@ +/* $XdotOrg: pre-CVS proposed fix for CESA-2004-003 alanc 7/25/2004 $ */ /* @@ -470,8 +682,8 @@ if (USE_HASHTABLE) { xpmHashAtom *slot; diff -urN xc.orig/extras/Xpm/lib/scan.c xc/extras/Xpm/lib/scan.c ---- xc.orig/extras/Xpm/lib/scan.c 2002-01-08 06:40:49.000000000 +1100 -+++ xc/extras/Xpm/lib/scan.c 2004-09-15 11:00:13.563593112 +1000 +--- xc.orig/extras/Xpm/lib/scan.c 2004-11-15 10:46:11.469153640 +0100 ++++ xc/extras/Xpm/lib/scan.c 2004-11-15 11:07:53.060281712 +0100 @@ -107,7 +107,8 @@ LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp, XpmAttributes *attributes)); @@ -538,8 +750,8 @@ if (!xcolors) return (XpmNoMemory); diff -urN xc.orig/lib/Xpm/Imakefile xc/lib/Xpm/Imakefile ---- xc.orig/lib/Xpm/Imakefile 2000-09-19 23:46:06.000000000 +1100 -+++ xc/lib/Xpm/Imakefile 2004-09-15 11:00:13.579590680 +1000 +--- xc.orig/lib/Xpm/Imakefile 2004-11-15 10:46:27.445724832 +0100 ++++ xc/lib/Xpm/Imakefile 2004-11-15 11:07:53.060281712 +0100 @@ -42,11 +42,16 @@ SPRINTFDEF = -DVOID_SPRINTF #endif @@ -558,212 +770,3 @@ HEADERS = xpm.h -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/common/xf86str.h xc/programs/Xserver/hw/xfree86/common/xf86str.h ---- xc.orig/programs/Xserver/hw/xfree86/common/xf86str.h 2004-09-15 10:05:46.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/common/xf86str.h 2004-09-15 10:14:05.000000000 +0000 -@@ -16,6 +16,7 @@ - #include "input.h" - #include "scrnintstr.h" - #include "pixmapstr.h" -+#include "colormapst.h" - #include "xf86Module.h" - #include "xf86Opt.h" - #include "xf86Pci.h" -@@ -747,7 +748,7 @@ - typedef Bool xf86EnterVTProc (int, int); - typedef void xf86LeaveVTProc (int, int); - typedef void xf86FreeScreenProc (int, int); --typedef int xf86ValidModeProc (int, DisplayModePtr, Bool, int); -+typedef ModeStatus xf86ValidModeProc (int, DisplayModePtr, Bool, int); - typedef void xf86EnableDisableFBAccessProc(int, Bool); - typedef int xf86SetDGAModeProc (int, int, DGADevicePtr); - typedef int xf86ChangeGammaProc (int, Gamma); -@@ -755,6 +756,8 @@ - typedef Bool xf86PMEventProc (int, pmEvent, Bool); - typedef int xf86HandleMessageProc (int, const char*, const char*, char**); - -+typedef void xf86LoadPaletteProc (ScrnInfoPtr, int, int *, LOCO *, VisualPtr); -+ - /* - * ScrnInfoRec - * -@@ -905,6 +908,7 @@ - xf86PointerMovedProc *PointerMoved; - xf86PMEventProc *PMEvent; - xf86HandleMessageProc *HandleMessage; -+ xf86LoadPaletteProc *LoadPalette; - - /* - * This can be used when the minor ABI version is incremented. -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c ---- xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c 2004-09-15 10:05:46.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c 2004-09-15 10:09:57.000000000 +0000 -@@ -873,3 +873,18 @@ - - return TRUE; - } -+ -+xf86SwitchModeProc * -+fbdevHWSwitchModeWeak(void) { return fbdevHWSwitchMode; } -+ -+xf86AdjustFrameProc * -+fbdevHWAdjustFrameWeak(void) { return fbdevHWAdjustFrame; } -+ -+xf86LeaveVTProc * -+fbdevHWLeaveVTWeak(void) { return fbdevHWLeaveVT; } -+ -+xf86ValidModeProc * -+fbdevHWValidModeWeak(void) { return fbdevHWValidMode; } -+ -+xf86LoadPaletteProc * -+fbdevHWLoadPaletteWeak(void) { return fbdevHWLoadPalette; } -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h ---- xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h 2001-10-01 13:44:12.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.h 2004-09-15 10:09:57.000000000 +0000 -@@ -49,4 +49,10 @@ - - Bool fbdevHWSaveScreen(ScreenPtr pScreen, int mode); - -+xf86SwitchModeProc *fbdevHWSwitchModeWeak(void); -+xf86AdjustFrameProc *fbdevHWAdjustFrameWeak(void); -+xf86LeaveVTProc *fbdevHWLeaveVTWeak(void); -+xf86ValidModeProc *fbdevHWValidModeWeak(void); -+xf86LoadPaletteProc *fbdevHWLoadPaletteWeak(void); -+ - #endif -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c ---- xc.orig/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c 2001-10-28 03:33:55.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhwstub.c 2004-09-15 10:09:57.000000000 +0000 -@@ -168,3 +168,18 @@ - { - return FALSE; - } -+ -+xf86SwitchModeProc * -+fbdevHWSwitchModeWeak(void) { return fbdevHWSwitchMode; } -+ -+xf86AdjustFrameProc * -+fbdevHWAdjustFrameWeak(void) { return fbdevHWAdjustFrame; } -+ -+xf86LeaveVTProc * -+fbdevHWLeaveVTWeak(void) { return fbdevHWLeaveVT; } -+ -+xf86ValidModeProc * -+fbdevHWValidModeWeak(void) { return fbdevHWValidMode; } -+ -+xf86LoadPaletteProc * -+fbdevHWLoadPaletteWeak(void) { return fbdevHWLoadPalette; } -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaaFallback.c xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c ---- xc.orig/programs/Xserver/hw/xfree86/xaa/xaaFallback.c 1999-05-30 03:03:31.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c 2004-09-15 10:09:57.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c,v 1.5 1999/05/30 03:03:31 dawes Exp $ */ -+/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaFallback.c,v 1.4 1999/03/14 11:18:09 dawes Exp $ */ - - #include "misc.h" - #include "xf86.h" -@@ -347,6 +347,7 @@ - {NULL} /* devPrivate */ - }; - -- -- -- -+GCOps *XAAGetFallbackOps(void) -+{ -+ return &XAAFallbackOps; -+} -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaaROP.c xc/programs/Xserver/hw/xfree86/xaa/xaaROP.c ---- xc.orig/programs/Xserver/hw/xfree86/xaa/xaaROP.c 2000-09-28 20:48:01.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/xaa/xaaROP.c 2004-09-15 10:09:57.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaaROP.c,v 1.2 2000/09/28 20:48:01 mvojkovi Exp $ */ -+/* $XFree86$ */ - - #include "X.h" - #include "misc.h" -@@ -94,6 +94,25 @@ - ROP_DPo - }; - -+int XAAGetCopyROP(int i) -+{ -+ return XAACopyROP[i]; -+} -+ -+int XAAGetCopyROP_PM(int i) -+{ -+ return XAACopyROP_PM[i]; -+} -+ -+int XAAGetPatternROP(int i) -+{ -+ return XAAPatternROP[i]; -+} -+ -+int XAAGetPatternROP_PM(int i) -+{ -+ return XAAPatternROP_PM[i]; -+} - - int - XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop) -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaalocal.h xc/programs/Xserver/hw/xfree86/xaa/xaalocal.h ---- xc.orig/programs/Xserver/hw/xfree86/xaa/xaalocal.h 2003-02-17 16:08:29.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/xaa/xaalocal.h 2004-09-15 10:09:57.000000000 +0000 -@@ -1626,6 +1626,7 @@ - - - extern GCOps XAAFallbackOps; -+extern GCOps *XAAGetFallbackOps(void); - extern GCFuncs XAAGCFuncs; - extern int XAAScreenIndex; - extern int XAAGCIndex; -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/xaa/xaarop.h xc/programs/Xserver/hw/xfree86/xaa/xaarop.h ---- xc.orig/programs/Xserver/hw/xfree86/xaa/xaarop.h 1999-03-21 07:35:31.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/xaa/xaarop.h 2004-09-15 10:09:57.000000000 +0000 -@@ -1,4 +1,4 @@ --/* $XFree86: xc/programs/Xserver/hw/xfree86/xaa/xaarop.h,v 1.1 1999/03/21 07:35:31 dawes Exp $ */ -+/* $XFree86$ */ - - /* - -@@ -299,9 +299,15 @@ - int XAAHelpSolidROP(ScrnInfoPtr pScrn, int *fg, int pm, int *rop); - int XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop); - -+/* XXX These four should be static, but it breaks the 6.7.0 ABI. */ - extern int XAACopyROP[16]; - extern int XAACopyROP_PM[16]; - extern int XAAPatternROP[16]; - extern int XAAPatternROP_PM[16]; - -+extern int XAAGetCopyROP(int i); -+extern int XAAGetCopyROP_PM(int i); -+extern int XAAGetPatternROP(int i); -+extern int XAAGetPatternROP_PM(int i); -+ - #endif /* _XAAROP_H */ -diff -Naurd xc.orig/programs/Xserver/hw/xfree86/input/keyboard/kbd.c xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c ---- xc.orig/programs/Xserver/hw/xfree86/input/keyboard/kbd.c 2003-02-17 16:08:29.000000000 +0000 -+++ xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c 2004-09-27 07:46:15.000000000 +0000 -@@ -573,6 +573,19 @@ - return; - } - -+#ifndef __sparc64__ -+ /* -+ * PC keyboards generate separate key codes for -+ * Alt+Print and Control+Pause but in the X keyboard model -+ * they need to get the same key code as the base key on the same -+ * physical keyboard key. -+ */ -+ if (scanCode == KEY_SysReqest) -+ scanCode = KEY_Print; -+ else if (scanCode == KEY_Break) -+ scanCode = KEY_Pause; -+#endif -+ - /* - * Now map the scancodes to real X-keycodes ... - */