*Background*
Patch 120094-22, may cause performance degradation of CPU and system
become unresposive when Trusted Extension or Accessibility is turned
on. Fixes of CR 6769901 are not appropriate should be corrected with CR
6839026, on all the x86 and SPARC machine .
When a machine is patched with 120094-22, Symptoms are as follows.
a) When screen is locked and Accessibility is turned on, popup window
might make x86/SPARC machine unresponsive.
b) When screen is locked and Trusted Extension is turned on, may cause
performance degradation of CPU. [tx] Xsun chews cpu and console appear
to be hung.
*What we have fixied*
Xsun is consuming 100% cpu cycle with trusted path because of CR6769901
Also we found, with accessibility, cpu consumption goes to 100%
*Code fixes are*
1) I have moved previous fix to right place in 'if else' block.
2) added the check for password dialog. Because restacking of password
dialog should happen, only, when screen is locked
3) added the check for accessibility. When accessibility is turned on,
pop up window will appear through screen saver
4)Also turn off listening of configurNotify and visibility events in
screen savers, when restacking of password dialog is happening. This
will fix the looping problem of visibility events.
*Testing *
1)We have done good amount of testing with Trusted path.
2) we have also tested on Xsun, Xorg and Xnewt
*limitations*
Popup windows will come through screen saver when ally is on. Fixes of
CR #6839026 are imcomplete and security breach is happening when
accessiblity is turned on. Solaris 8,9 10 and nevada for both sparc and
X86 platforms are impacted. For detail please check CR 6875930.
Fixes of CR#6839026 re-introduces the security issue which was fixed in
CR6769901, because right now we do not have any simple solutions that
will allow only good popup windows[ GOK and MAG window] and stop all the
evil popup windows from Thunderbirds when screen is locked and
Accessibility is turned on.
We are not using the login-helper interface that Alan suggested because
it was too difficult at this time to figure out how to get xscreensaver
to use it. The code changes that we are making are in the xscreensaver
code and not xscreensaver-lock code where previous login-helper changes
were made. We are no worse off than before our changes when A11y is
enabled. Without the at_enabled check, when a11y is enabled, the
accessibility helpers would not be able to get above the xscreensaver
blank screen which is a serious regression so at minimum, the at_enabled
check is needed for a11y issue.
It is not easy to give any quick solution for security breach when
accessibility is on, in short time. We will address complete fix with
login-helper changes, in S10U9. I think, showing popup window is better
than machine becoming unresponsive for time being.
I am including svn diff of repository trunk/vermillion.
Index: ChangeLog
===================================================================
--- ChangeLog (revision 19104)
+++ ChangeLog (working copy)
@@ -1,3 +1,9 @@
+2009-08-24 Arvind Umrao <arvind.umrao at sun.com>
+
+ * SUNWxscreensaver.spec, patches/xscreensaver-48-bug-6839026.diff:
+ Patch for bugster CR #6839026. Regression in screensaver may cause
Performance Degradation and make locked screensaver unresponsive.
+
+
2009-08-20 Ke Wang <ke.wang at sun.com>
* SUNWgnome-spell.spec:
* base-specs/enchant.spec:
Index: patches/xscreensaver-48-bug-6839026.diff
===================================================================
--- patches/xscreensaver-48-bug-6839026.diff (revision 0)
+++ patches/xscreensaver-48-bug-6839026.diff (revision 0)
@@ -0,0 +1,77 @@
+--- xscreensaver-5.01/driver/lock.c_org 2009-08-21
11:45:14.099217000 +0530
++++ xscreensaver-5.01/driver/lock.c 2009-08-24 09:45:16.841888000 +0530
+@@ -2139,36 +2139,6 @@ passwd_event_loop (saver_info *si)
+ }
+ }
+
+- //bugid 6769901: popup windows appearing through xscreensaver
+- //code to stop popup windows while screen is locked
+- //Raise the screen saver window and then the password dialog
window
+- if (event.xany.type == VisibilityNotify || event.xany.type ==
ConfigureNotify || event.xany.type == CreateNotify)
+- {
+- int screen;
+- for (screen = 0; screen < si->nscreens; screen++)
+- {
+- if(si->passwd_dialog)
+- {
+- saver_screen_info *ssi =
&si->screens[screen];
+- if(screen==0)
+- {
+- Window screen_win[2] = {
+- si->passwd_dialog,
+- ssi->screensaver_window
+- };
+- XRestackWindows(si->dpy,
screen_win, 2);
+-
XMapRaised(si->dpy,si->passwd_dialog);
+- XFlush(si->dpy);
+- }
+- else
+- {
+-
XMapRaised(si->dpy,ssi->screensaver_window);
+- XFlush(si->dpy);
+- }
+- }
+- }
+- }
+-
+ #else /* !HAVE_XSCREENSAVER_LOCK */
+ if (event.xany.window == si->passwd_dialog && event.xany.type ==
Expose)
+ draw_passwd_window (si);
+@@ -2240,6 +2210,37 @@ for (ii = 0; ii < 4; ii++)
+ }
+ /* the above new code for restacking under the conidtion
+ */
++
++/*bugid 6769901,6839026
++popup windows appearing through xscreensaver
++code to stop popup windows while screen is locked
++Raise the screen saver window and then the password dialog window */
++ else if( !at_enabled && si->passwd_dialog
++ && (event.xany.type == VisibilityNotify
++ || event.xany.type == ConfigureNotify
++ || event.xany.type == CreateNotify))
++ {
++ int screen;
++ for (screen = 0; screen < si->nscreens; screen++)
++ {
++ saver_screen_info *ssi = &si->screens[screen];
++ if(event.xany.window && (event.xany.window !=
ssi->screensaver_window ) && (event.xany.window != si->passwd_dialog))
++ {
++ if(screen==0)
++ {
++ Window screen_win[2] =
{si->passwd_dialog,ssi->screensaver_window};
++ XRestackWindows(si->dpy, screen_win, 2);
++ XMapRaised(si->dpy,si->passwd_dialog);
++ XFlush(si->dpy);
++ }
++ else /* screeen where we do not have password
dialog */
++ {
++ XMapRaised(si->dpy,ssi->screensaver_window);
++ XFlush(si->dpy);
++ }
++ }
++ }
++ }
+ else
+ {
+ /*
Index: SUNWxscreensaver.spec
===================================================================
--- SUNWxscreensaver.spec (revision 19104)
+++ SUNWxscreensaver.spec (working copy)
@@ -149,6 +149,8 @@
Patch46: xscreensaver-46-bug-6857559.diff
# date:2009-07-31 owner:bp230705 type:bug bugster:6859039
Patch47: xscreensaver-47-bug-6859039.diff
+# date:2009-08-24 owner:au230626 type:bug bugster:6839026
+Patch48: xscreensaver-48-bug-6839026.diff
# date:2008-03-07 owner:alanc type:branding
Patch101: rss-glx-101-matrixview.diff
@@ -327,6 +329,7 @@
%patch45 -p1
%patch46 -p1
%patch47 -p1
+%patch48 -p1
chmod a+x install-sh configure
@@ -653,3 +656,5 @@
- rename patches from *.patch to *.diff
* Fri Jul 17 2009 - alan.coopersmith at sun.com
- initial version (moved from X gate)
+* Mon Aug 24 2009 - arvind.umrao at sun.com
+- Patch for bugster CR #6839026. Regression in screensaver may cause
Performance Degradation and make locked screensaver unresponsive.