diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/security/20130201/7192977.patch')
-rw-r--r-- | java/openjdk6/files/icedtea/security/20130201/7192977.patch | 436 |
1 files changed, 0 insertions, 436 deletions
diff --git a/java/openjdk6/files/icedtea/security/20130201/7192977.patch b/java/openjdk6/files/icedtea/security/20130201/7192977.patch deleted file mode 100644 index 19e366b08377..000000000000 --- a/java/openjdk6/files/icedtea/security/20130201/7192977.patch +++ /dev/null @@ -1,436 +0,0 @@ -diff --git a/src/share/classes/java/awt/EventQueue.java b/src/share/classes/java/awt/EventQueue.java ---- jdk/src/share/classes/java/awt/EventQueue.java -+++ jdk/src/share/classes/java/awt/EventQueue.java -@@ -173,8 +173,14 @@ public class EventQueue { - } - public void removeSourceEvents(EventQueue eventQueue, - Object source, -- boolean removeAllEvents) { -+ boolean removeAllEvents) -+ { - eventQueue.removeSourceEvents(source, removeAllEvents); -+ } -+ public void invokeAndWait(Object source, Runnable r) -+ throws InterruptedException, InvocationTargetException -+ { -+ EventQueue.invokeAndWait(source, r); - } - }); - } -@@ -1042,8 +1048,14 @@ public class EventQueue { - * @since 1.2 - */ - public static void invokeAndWait(Runnable runnable) -- throws InterruptedException, InvocationTargetException { -+ throws InterruptedException, InvocationTargetException -+ { -+ invokeAndWait(Toolkit.getDefaultToolkit(), runnable); -+ } - -+ static void invokeAndWait(Object source, Runnable runnable) -+ throws InterruptedException, InvocationTargetException -+ { - if (EventQueue.isDispatchThread()) { - throw new Error("Cannot call invokeAndWait from the event dispatcher thread"); - } -@@ -1052,8 +1064,7 @@ public class EventQueue { - Object lock = new AWTInvocationLock(); - - InvocationEvent event = -- new InvocationEvent(Toolkit.getDefaultToolkit(), runnable, lock, -- true); -+ new InvocationEvent(source, runnable, lock, true); - - synchronized (lock) { - Toolkit.getEventQueue().postEvent(event); -diff --git a/src/share/classes/java/awt/Window.java b/src/share/classes/java/awt/Window.java ---- jdk/src/share/classes/java/awt/Window.java -+++ jdk/src/share/classes/java/awt/Window.java -@@ -1036,7 +1036,7 @@ public class Window extends Container im - } - else { - try { -- EventQueue.invokeAndWait(action); -+ EventQueue.invokeAndWait(this, action); - } - catch (InterruptedException e) { - System.err.println("Disposal was interrupted:"); -diff --git a/src/share/classes/javax/swing/RepaintManager.java b/src/share/classes/javax/swing/RepaintManager.java ---- jdk/src/share/classes/javax/swing/RepaintManager.java -+++ jdk/src/share/classes/javax/swing/RepaintManager.java -@@ -27,17 +27,21 @@ package javax.swing; - - import java.awt.*; - import java.awt.event.*; --import java.awt.peer.ComponentPeer; --import java.awt.peer.ContainerPeer; - import java.awt.image.VolatileImage; -+import java.security.AccessControlContext; - import java.security.AccessController; -+import java.security.PrivilegedAction; - import java.util.*; -+import java.util.concurrent.atomic.AtomicInteger; - import java.applet.*; - - import sun.awt.AppContext; -+import sun.awt.AWTAccessor; - import sun.awt.DisplayChangedListener; - import sun.awt.SunToolkit; - import sun.java2d.SunGraphicsEnvironment; -+import sun.misc.JavaSecurityAccess; -+import sun.misc.SharedSecrets; - import sun.security.action.GetPropertyAction; - - -@@ -168,6 +172,9 @@ public class RepaintManager - * Runnable used to process all repaint/revalidate requests. - */ - private final ProcessingRunnable processingRunnable; -+ -+ private final static JavaSecurityAccess javaSecurityAccess = -+ SharedSecrets.getJavaSecurityAccess(); - - - static { -@@ -553,13 +560,26 @@ public class RepaintManager - // This is called from the toolkit thread when awt needs to run a - // Runnable before we paint. - // -- void nativeQueueSurfaceDataRunnable(AppContext appContext, Component c, -- Runnable r) { -+ void nativeQueueSurfaceDataRunnable(AppContext appContext, -+ final Component c, final Runnable r) -+ { - synchronized(this) { - if (runnableList == null) { - runnableList = new LinkedList<Runnable>(); - } -- runnableList.add(r); -+ runnableList.add(new Runnable() { -+ public void run() { -+ AccessControlContext stack = AccessController.getContext(); -+ AccessControlContext acc = -+ AWTAccessor.getComponentAccessor().getAccessControlContext(c); -+ javaSecurityAccess.doIntersectionPrivilege(new PrivilegedAction<Void>() { -+ public Void run() { -+ r.run(); -+ return null; -+ } -+ }, stack, acc); -+ } -+ }); - } - scheduleProcessingRunnable(appContext); - } -@@ -639,9 +659,9 @@ public class RepaintManager - * @see #addInvalidComponent - */ - public void validateInvalidComponents() { -- java.util.List<Component> ic; -+ final java.util.List<Component> ic; - synchronized(this) { -- if(invalidComponents == null) { -+ if (invalidComponents == null) { - return; - } - ic = invalidComponents; -@@ -649,7 +669,17 @@ public class RepaintManager - } - int n = ic.size(); - for(int i = 0; i < n; i++) { -- ic.get(i).validate(); -+ final Component c = ic.get(i); -+ AccessControlContext stack = AccessController.getContext(); -+ AccessControlContext acc = -+ AWTAccessor.getComponentAccessor().getAccessControlContext(c); -+ javaSecurityAccess.doIntersectionPrivilege( -+ new PrivilegedAction<Void>() { -+ public Void run() { -+ c.validate(); -+ return null; -+ } -+ }, stack, acc); - } - } - -@@ -696,76 +726,75 @@ public class RepaintManager - paintDirtyRegions(tmpDirtyComponents); - } - -- private void paintDirtyRegions(Map<Component,Rectangle> -- tmpDirtyComponents){ -- int i, count; -- java.util.List<Component> roots; -- Component dirtyComponent; -- -- count = tmpDirtyComponents.size(); -- if (count == 0) { -+ private void paintDirtyRegions( -+ final Map<Component,Rectangle> tmpDirtyComponents) -+ { -+ if (tmpDirtyComponents.isEmpty()) { - return; - } - -- Rectangle rect; -- int localBoundsX = 0; -- int localBoundsY = 0; -- int localBoundsH = 0; -- int localBoundsW = 0; -- Enumeration keys; -- -- roots = new ArrayList<Component>(count); -+ final java.util.List<Component> roots = -+ new ArrayList<Component>(tmpDirtyComponents.size()); - - for (Component dirty : tmpDirtyComponents.keySet()) { - collectDirtyComponents(tmpDirtyComponents, dirty, roots); - } - -- count = roots.size(); -- // System.out.println("roots size is " + count); -+ final AtomicInteger count = new AtomicInteger(roots.size()); - painting = true; - try { -- for(i=0 ; i < count ; i++) { -- dirtyComponent = roots.get(i); -- rect = tmpDirtyComponents.get(dirtyComponent); -- // System.out.println("Should refresh :" + rect); -- localBoundsH = dirtyComponent.getHeight(); -- localBoundsW = dirtyComponent.getWidth(); -+ for(int j = 0; j < count.get(); j++) { -+ final int i = j; -+ final Component dirtyComponent = roots.get(j); - -- SwingUtilities.computeIntersection(localBoundsX, -- localBoundsY, -- localBoundsW, -- localBoundsH, -- rect); -- if (dirtyComponent instanceof JComponent) { -- ((JComponent)dirtyComponent).paintImmediately( -- rect.x,rect.y,rect.width, rect.height); -- } -- else if (dirtyComponent.isShowing()) { -- Graphics g = JComponent.safelyGetGraphics( -- dirtyComponent, dirtyComponent); -- // If the Graphics goes away, it means someone disposed of -- // the window, don't do anything. -- if (g != null) { -- g.setClip(rect.x, rect.y, rect.width, rect.height); -- try { -- dirtyComponent.paint(g); -- } finally { -- g.dispose(); -+ AccessControlContext stack = AccessController.getContext(); -+ AccessControlContext acc = -+ AWTAccessor.getComponentAccessor().getAccessControlContext(dirtyComponent); -+ javaSecurityAccess.doIntersectionPrivilege(new PrivilegedAction<Void>() { -+ public Void run() { -+ Rectangle rect = tmpDirtyComponents.get(dirtyComponent); -+ -+ int localBoundsH = dirtyComponent.getHeight(); -+ int localBoundsW = dirtyComponent.getWidth(); -+ SwingUtilities.computeIntersection(0, -+ 0, -+ localBoundsW, -+ localBoundsH, -+ rect); -+ if (dirtyComponent instanceof JComponent) { -+ ((JComponent)dirtyComponent).paintImmediately( -+ rect.x,rect.y,rect.width, rect.height); - } -+ else if (dirtyComponent.isShowing()) { -+ Graphics g = JComponent.safelyGetGraphics( -+ dirtyComponent, dirtyComponent); -+ // If the Graphics goes away, it means someone disposed of -+ // the window, don't do anything. -+ if (g != null) { -+ g.setClip(rect.x, rect.y, rect.width, rect.height); -+ try { -+ dirtyComponent.paint(g); -+ } finally { -+ g.dispose(); -+ } -+ } -+ } -+ // If the repaintRoot has been set, service it now and -+ // remove any components that are children of repaintRoot. -+ if (repaintRoot != null) { -+ adjustRoots(repaintRoot, roots, i + 1); -+ count.set(roots.size()); -+ paintManager.isRepaintingRoot = true; -+ repaintRoot.paintImmediately(0, 0, repaintRoot.getWidth(), -+ repaintRoot.getHeight()); -+ paintManager.isRepaintingRoot = false; -+ // Only service repaintRoot once. -+ repaintRoot = null; -+ } -+ -+ return null; - } -- } -- // If the repaintRoot has been set, service it now and -- // remove any components that are children of repaintRoot. -- if (repaintRoot != null) { -- adjustRoots(repaintRoot, roots, i + 1); -- count = roots.size(); -- paintManager.isRepaintingRoot = true; -- repaintRoot.paintImmediately(0, 0, repaintRoot.getWidth(), -- repaintRoot.getHeight()); -- paintManager.isRepaintingRoot = false; -- // Only service repaintRoot once. -- repaintRoot = null; -- } -+ }, stack, acc); - } - } finally { - painting = false; -diff --git a/src/share/classes/sun/applet/AppletPanel.java b/src/share/classes/sun/applet/AppletPanel.java ---- jdk/src/share/classes/sun/applet/AppletPanel.java -+++ jdk/src/share/classes/sun/applet/AppletPanel.java -@@ -47,6 +47,7 @@ import java.util.WeakHashMap; - import java.util.WeakHashMap; - import javax.swing.SwingUtilities; - import sun.awt.AppContext; -+import sun.awt.AWTAccessor; - import sun.awt.EmbeddedFrame; - import sun.awt.SunToolkit; - import sun.misc.MessageUtils; -@@ -449,12 +450,12 @@ abstract class AppletPanel extends Panel - // to avoid deadlock. - try { - final AppletPanel p = this; -- -- SwingUtilities.invokeAndWait(new Runnable() { -- public void run() { -- p.validate(); -- } -- }); -+ Runnable r = new Runnable() { -+ public void run() { -+ p.validate(); -+ } -+ }; -+ AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); - } - catch(InterruptedException ie) { - } -@@ -479,18 +480,19 @@ abstract class AppletPanel extends Panel - try { - final AppletPanel p = this; - final Applet a = applet; -+ Runnable r = new Runnable() { -+ public void run() { -+ p.validate(); -+ a.setVisible(true); - -- SwingUtilities.invokeAndWait(new Runnable() { -- public void run() { -- p.validate(); -- a.setVisible(true); -- -- // Fix for BugTraq ID 4041703. -- // Set the default focus for an applet. -- if (hasInitialFocus()) -- setDefaultFocus(); -+ // Fix for BugTraq ID 4041703. -+ // Set the default focus for an applet. -+ if (hasInitialFocus()) { -+ setDefaultFocus(); - } -- }); -+ } -+ }; -+ AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); - } - catch(InterruptedException ie) { - } -@@ -513,13 +515,12 @@ abstract class AppletPanel extends Panel - // to avoid deadlock. - try { - final Applet a = applet; -- -- SwingUtilities.invokeAndWait(new Runnable() { -- public void run() -- { -- a.setVisible(false); -- } -- }); -+ Runnable r = new Runnable() { -+ public void run() { -+ a.setVisible(false); -+ } -+ }; -+ AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); - } - catch(InterruptedException ie) { - } -@@ -571,17 +572,14 @@ abstract class AppletPanel extends Panel - } - status = APPLET_DISPOSE; - -- try -- { -+ try { - final Applet a = applet; -- -- EventQueue.invokeAndWait(new Runnable() -- { -- public void run() -- { -+ Runnable r = new Runnable() { -+ public void run() { - remove(a); - } -- }); -+ }; -+ AWTAccessor.getEventQueueAccessor().invokeAndWait(applet, r); - } - catch(InterruptedException ie) - { -diff --git a/src/share/classes/sun/awt/AWTAccessor.java b/src/share/classes/sun/awt/AWTAccessor.java ---- jdk/src/share/classes/sun/awt/AWTAccessor.java -+++ jdk/src/share/classes/sun/awt/AWTAccessor.java -@@ -29,6 +29,7 @@ import java.awt.*; - - import sun.misc.Unsafe; - -+import java.lang.reflect.InvocationTargetException; - import java.security.AccessControlContext; - - import java.util.Vector; -@@ -198,6 +199,11 @@ public final class AWTAccessor { - */ - void removeSourceEvents(EventQueue eventQueue, Object source, - boolean removeAllEvents); -+ /** -+ * Static in EventQueue -+ */ -+ void invokeAndWait(Object source, Runnable r) -+ throws InterruptedException, InvocationTargetException; - } - - /** -diff --git a/src/windows/classes/sun/awt/windows/WComponentPeer.java b/src/windows/classes/sun/awt/windows/WComponentPeer.java ---- jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java -+++ jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java -@@ -427,14 +427,15 @@ public abstract class WComponentPeer ext - try { - replaceSurfaceData(); - } catch (InvalidPipeException e) { -- // REMIND : what do we do if our surface creation failed? -+ // REMIND : what do we do if our surface creation failed? - } - } - } - }; -+ Component c = (Component)target; - // Fix 6255371. -- if (!PaintEventDispatcher.getPaintEventDispatcher().queueSurfaceDataReplacing((Component)target, r)) { -- postEvent(new InvocationEvent(Toolkit.getDefaultToolkit(), r)); -+ if (!PaintEventDispatcher.getPaintEventDispatcher().queueSurfaceDataReplacing(c, r)) { -+ postEvent(new InvocationEvent(c, r)); - } - } - |