diff --git a/xorg-server-1.4-vnc-memory.diff b/xorg-server-1.4-vnc-memory.diff new file mode 100644 index 0000000..e7fd5ab --- /dev/null +++ b/xorg-server-1.4-vnc-memory.diff @@ -0,0 +1,19 @@ +diff -u -w -r xorg-server-1.4.0.90.orig//hw/vnc/init.c xorg-server-1.4.0.90/hw/vnc/init.c +--- xorg-server-1.4.0.90.orig//hw/vnc/init.c 2008-03-20 14:49:06.620576750 +0100 ++++ xorg-server-1.4.0.90/hw/vnc/init.c 2008-03-20 14:49:27.769898500 +0100 +@@ -827,6 +827,7 @@ + KbdDeviceOff(); + break; + case DEVICE_CLOSE: ++ vncSetKeyboardDevice(NULL); + if (pDev->on) + KbdDeviceOff(); + break; +@@ -869,6 +870,7 @@ + break; + + case DEVICE_CLOSE: ++ vncSetPointerDevice(NULL); + if (pDev->on) + PtrDeviceOff(); + break; diff --git a/xorg-server-1.4-vnc.patch b/xorg-server-1.4-vnc.patch index 13ad282..4fef32b 100644 --- a/xorg-server-1.4-vnc.patch +++ b/xorg-server-1.4-vnc.patch @@ -6821,7 +6821,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/httpd.c xorg-server-1.4/hw/vnc/httpd.c diff -pNur xorg-server-1.4.orig/hw/vnc/init.c xorg-server-1.4/hw/vnc/init.c --- xorg-server-1.4.orig/hw/vnc/init.c 1969-12-31 16:00:00.000000000 -0800 +++ xorg-server-1.4/hw/vnc/init.c 2007-09-06 16:09:45.000000000 -0700 -@@ -0,0 +1,1077 @@ +@@ -0,0 +1,1075 @@ +/* + * init.c + * @@ -7636,7 +7636,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/init.c xorg-server-1.4/hw/vnc/init.c + switch (onoff) + { + case DEVICE_INIT: -+ vncSetKeyboardDevice(pDevice); ++ vncSetKeyboardDevice(pDevice); + KbdDeviceInit(pDevice, &keySyms, modMap); + InitKeyboardDeviceStruct(pDev, &keySyms, modMap, + (BellProcPtr)rfbSendBell, @@ -7651,7 +7651,6 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/init.c xorg-server-1.4/hw/vnc/init.c + KbdDeviceOff(); + break; + case DEVICE_CLOSE: -+ vncSetKeyboardDevice(NULL); + if (pDev->on) + KbdDeviceOff(); + break; @@ -7680,7 +7679,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/init.c xorg-server-1.4/hw/vnc/init.c + GetMotionHistory, + PtrDeviceControl, + GetMaximumEventsNum(), 2 /* numAxes */); -+ vncSetPointerDevice(pDevice); ++ vncSetPointerDevice(pDevice); + break; + + case DEVICE_ON: @@ -7694,7 +7693,6 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/init.c xorg-server-1.4/hw/vnc/init.c + break; + + case DEVICE_CLOSE: -+ vncSetPointerDevice(NULL); + if (pDev->on) + PtrDeviceOff(); + break; @@ -10151,7 +10149,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/rfbkeyb.c xorg-server-1.4/hw/vnc/rfbkeyb. + switch (onoff) + { + case DEVICE_INIT: -+ vncSetKeyboardDevice(device); ++ vncSetKeyboardDevice(device); + KbdDeviceInit(device, &keySyms, modMap); +#ifdef XKB + if (noXkbExtension) { @@ -10204,7 +10202,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/rfbkeyb.c xorg-server-1.4/hw/vnc/rfbkeyb. + KbdDeviceOff(); + break; + case DEVICE_CLOSE: -+ vncSetKeyboardDevice(NULL); ++ vncSetKeyboardDevice(NULL); + if (pDev->on) + KbdDeviceOff(); + break; @@ -10530,7 +10528,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/rfbmouse.c xorg-server-1.4/hw/vnc/rfbmous + switch (onoff) + { + case DEVICE_INIT: -+ vncSetPointerDevice(device); ++ vncSetPointerDevice(device); + PtrDeviceInit(); + map[1] = 1; + map[2] = 2; @@ -10554,7 +10552,7 @@ diff -pNur xorg-server-1.4.orig/hw/vnc/rfbmouse.c xorg-server-1.4/hw/vnc/rfbmous + break; + + case DEVICE_CLOSE: -+ vncSetPointerDevice(NULL); ++ vncSetPointerDevice(NULL); + if (pDev->on) + PtrDeviceOff(); + break; diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index baa2d56..5538871 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Thu Mar 20 14:51:20 CET 2008 - sndirsch@suse.de + +- zap_warning_xserver.diff + * implements FATE #302988: ZapWarning (Luc Verhaegen) + Uses PCSpeaker for beep. Press once, beep. Press again within + 2s (which is ample), terminate. Documented in xorg.conf manpage. +- make the memory corruption fix by schwab a seperate patch to make + sure it won't get lost the next time I update the VNC patch + ------------------------------------------------------------------- Wed Mar 19 20:11:26 CET 2008 - schwab@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index c6252fe..ca619c4 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -22,7 +22,7 @@ BuildRequires: libjpeg-devel Url: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.3 -Release: 77 +Release: 78 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -106,6 +106,8 @@ Patch97: CVE-2007-6429-shm_evi.diff Patch98: CVE-2008-0006-pcf_font.diff Patch99: commit-50e80c3.diff Patch100: commit-a6a7fad.diff +Patch101: zap_warning_xserver.diff +Patch102: xorg-server-1.4-vnc-memory.diff %description This package contains the X.Org Server. @@ -206,6 +208,7 @@ popd %patch39 -p1 %patch40 -p1 %patch43 -p0 +%patch102 -p1 chmod 755 hw/vnc/symlink-vnc.sh %endif %patch41 -p1 @@ -238,6 +241,7 @@ popd %patch98 -p1 %patch99 -p1 %patch100 -p1 +%patch101 -p1 %build pushd xorg-docs-* @@ -544,6 +548,13 @@ exit 0 %endif %changelog +* Thu Mar 20 2008 sndirsch@suse.de +- zap_warning_xserver.diff + * implements FATE #302988: ZapWarning (Luc Verhaegen) + Uses PCSpeaker for beep. Press once, beep. Press again within + 2s (which is ample), terminate. Documented in xorg.conf manpage. +- make the memory corruption fix by schwab a seperate patch to make + sure it won't get lost the next time I update the VNC patch * Wed Mar 19 2008 schwab@suse.de - Fix vnc server memory corruption. * Fri Mar 07 2008 sndirsch@suse.de diff --git a/zap_warning_xserver.diff b/zap_warning_xserver.diff new file mode 100644 index 0000000..3832bcf --- /dev/null +++ b/zap_warning_xserver.diff @@ -0,0 +1,101 @@ +diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Config.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Config.c +--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Config.c 2008-03-09 12:36:39.000000000 +0100 ++++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Config.c 2008-03-09 13:33:17.000000000 +0100 +@@ -743,6 +743,7 @@ + FLAG_NOTRAPSIGNALS, + FLAG_DONTVTSWITCH, + FLAG_DONTZAP, ++ FLAG_ZAPWARNING, + FLAG_DONTZOOM, + FLAG_DISABLEVIDMODE, + FLAG_ALLOWNONLOCAL, +@@ -788,6 +789,8 @@ + {0}, FALSE }, + { FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN, + {0}, FALSE }, ++ { FLAG_ZAPWARNING, "ZapWarning", OPTV_BOOLEAN, ++ {0}, FALSE }, + { FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN, + {0}, FALSE }, + { FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN, +@@ -912,6 +915,7 @@ + xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals); + xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch); + xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap); ++ xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning); + xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom); + + xf86GetOptValBool(FlagOptions, FLAG_ALLOW_DEACTIVATE_GRABS, +diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c +--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Events.c 2008-03-09 13:27:24.000000000 +0100 ++++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c 2008-03-09 13:30:18.000000000 +0100 +@@ -267,12 +267,26 @@ + #endif + switch (action) { + case ACTION_TERMINATE: +- if (!xf86Info.dontZap) { ++ if (xf86Info.dontZap) ++ break; ++ ++ if (xf86Info.ZapWarning) { ++ static struct timeval LastZap = { 0, 0}; ++ struct timeval NewZap; ++ ++ gettimeofday(&NewZap, NULL); ++ ++ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) { ++ xf86OSRingBell(100, 1000, 500); ++ LastZap = NewZap; ++ break; ++ } ++ } ++ + #ifdef XFreeXDGA +- DGAShutdown(); ++ DGAShutdown(); + #endif +- GiveUp(0); +- } ++ GiveUp(0); + break; + case ACTION_NEXT_MODE: + if (!xf86Info.dontZoom) +diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Globals.c xorg-server-1.4.0.90/hw/xfree86/common/xf86Globals.c +--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Globals.c 2008-03-09 12:36:39.000000000 +0100 ++++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Globals.c 2008-03-09 13:31:40.000000000 +0100 +@@ -107,6 +107,7 @@ + FALSE, /* inputPending */ + FALSE, /* dontVTSwitch */ + FALSE, /* dontZap */ ++ FALSE, /* ZapWarning */ + FALSE, /* dontZoom */ + FALSE, /* notrapSignals */ + FALSE, /* caughtSignal */ +diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Privstr.h xorg-server-1.4.0.90/hw/xfree86/common/xf86Privstr.h +--- xorg-server-1.4.0.90-orig//hw/xfree86/common/xf86Privstr.h 2007-12-07 03:38:42.000000000 +0100 ++++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Privstr.h 2008-03-09 13:29:43.000000000 +0100 +@@ -85,6 +85,7 @@ + Bool inputPending; + Bool dontVTSwitch; + Bool dontZap; ++ Bool ZapWarning; + Bool dontZoom; + Bool notrapSignals; /* don't exit cleanly - die at fault */ + Bool caughtSignal; +diff -ur xorg-server-1.4.0.90-orig//hw/xfree86/doc/man/xorg.conf.man.pre xorg-server-1.4.0.90/hw/xfree86/doc/man/xorg.conf.man.pre +--- xorg-server-1.4.0.90-orig//hw/xfree86/doc/man/xorg.conf.man.pre 2008-03-09 12:36:39.000000000 +0100 ++++ xorg-server-1.4.0.90/hw/xfree86/doc/man/xorg.conf.man.pre 2008-03-09 13:42:36.000000000 +0100 +@@ -446,6 +446,13 @@ + is passed to clients. + Default: off. + .TP 7 ++.BI "Option \*qZapWarning\*q \*q" boolean \*q ++This warns the user loudly when the ++.B Ctrl+Alt+Backspace ++sequence is pressed for the first time but still terminates the __xservername__ ++server when this key-sequence is pressed again shortly after. ++Default: off. ++.TP 7 + .BI "Option \*qDontZoom\*q \*q" boolean \*q + This disallows the use of the + .B Ctrl+Alt+Keypad\-Plus