changeset 1470:7e38108fb278

2009-04-16 Lillian Angel <langel@redhat.com> * HACKING: Updated. * Makefile.am: Updated to b16 bundle. (ICEDTEA_PATCHES): Removed unneeded patches (icedtea.stamp): fixed build path. (icedtea-ecj.stamp): Likewise. * patches/ecj/icedtea.patch: Fixed path. * patches/icedtea-bytebuffer-compact.patch: Updated. * patches/icedtea-core-build.patch: Fixed path. * patches/icedtea-jdk-docs-target.patch: Fixed path. * patches/icedtea-shark-build.patch: Fixed path. * patches/icedtea-version.patch: Updated * patches/icedtea-display-mode-changer.patch, patches/icedtea-io_util-overflow.patch, patches/security/icedtea-6536193.patch, patches/security/icedtea-6610888.patch, patches/security/icedtea-6610896.patch, patches/security/icedtea-6630639.patch, patches/security/icedtea-6632886.patch, patches/security/icedtea-6636360.patch, patches/security/icedtea-6652463.patch, patches/security/icedtea-6656633.patch, patches/security/icedtea-6658158.patch, patches/security/icedtea-6691246.patch, patches/security/icedtea-6717680.patch, patches/security/icedtea-6721651.patch, patches/security/icedtea-6737315.patch, patches/security/icedtea-6792554.patch, patches/security/icedtea-6804996.patch, patches/security/icedtea-6804997.patch, patches/security/icedtea-6804998.patch: Removed.
author Lillian Angel <langel@redhat.com>
date Thu, 16 Apr 2009 11:26:48 -0400
parents 147eb19a7637
children 7408dba85141
files ChangeLog HACKING Makefile.am patches/ecj/icedtea.patch patches/icedtea-bytebuffer-compact.patch patches/icedtea-core-build.patch patches/icedtea-display-mode-changer.patch patches/icedtea-io_util-overflow.patch patches/icedtea-jdk-docs-target.patch patches/icedtea-shark-build.patch patches/icedtea-version.patch patches/security/icedtea-6536193.patch patches/security/icedtea-6610888.patch patches/security/icedtea-6610896.patch patches/security/icedtea-6630639.patch patches/security/icedtea-6632886.patch patches/security/icedtea-6636360.patch patches/security/icedtea-6652463.patch patches/security/icedtea-6656633.patch patches/security/icedtea-6658158.patch patches/security/icedtea-6691246.patch patches/security/icedtea-6717680.patch patches/security/icedtea-6721651.patch patches/security/icedtea-6737315.patch patches/security/icedtea-6792554.patch patches/security/icedtea-6804996.patch patches/security/icedtea-6804997.patch patches/security/icedtea-6804998.patch
diffstat 28 files changed, 51 insertions(+), 3548 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Apr 16 10:55:27 2009 -0400
+++ b/ChangeLog	Thu Apr 16 11:26:48 2009 -0400
@@ -1,3 +1,36 @@
+2009-04-16  Lillian Angel  <langel@redhat.com>
+
+	* HACKING: Updated.
+	* Makefile.am: Updated to b16 bundle.
+	(ICEDTEA_PATCHES): Removed unneeded patches 
+	(icedtea.stamp): fixed build path.
+	(icedtea-ecj.stamp): Likewise.
+	* patches/ecj/icedtea.patch: Fixed path.
+	* patches/icedtea-bytebuffer-compact.patch: Updated.
+	* patches/icedtea-core-build.patch: Fixed path.
+	* patches/icedtea-jdk-docs-target.patch: Fixed path.
+	* patches/icedtea-shark-build.patch: Fixed path.
+	* patches/icedtea-version.patch: Updated
+	* patches/icedtea-display-mode-changer.patch, 
+	patches/icedtea-io_util-overflow.patch,
+	patches/security/icedtea-6536193.patch,
+	patches/security/icedtea-6610888.patch,
+	patches/security/icedtea-6610896.patch,
+	patches/security/icedtea-6630639.patch,
+	patches/security/icedtea-6632886.patch,
+	patches/security/icedtea-6636360.patch,
+	patches/security/icedtea-6652463.patch,
+	patches/security/icedtea-6656633.patch,
+	patches/security/icedtea-6658158.patch,
+	patches/security/icedtea-6691246.patch,
+	patches/security/icedtea-6717680.patch,
+	patches/security/icedtea-6721651.patch,
+	patches/security/icedtea-6737315.patch,
+	patches/security/icedtea-6792554.patch,
+	patches/security/icedtea-6804996.patch,
+	patches/security/icedtea-6804997.patch,
+	patches/security/icedtea-6804998.patch: Removed.
+
 2009-04-16  Omair Majid  <omajid@redhat.com>
 
 	* patches/hotspot/default/icedtea-ignore-unrecognized-options.patch: New
--- a/HACKING	Thu Apr 16 10:55:27 2009 -0400
+++ b/HACKING	Thu Apr 16 11:26:48 2009 -0400
@@ -32,8 +32,7 @@
 * icedtea-javac-debuginfo.patch: Ensure debugging information is generated for all class files.
 * icedtea-javafiles.patch: Add missing Java files to list.
 * icedtea-jpegclasses.patch: Add com.sun.image.codec.jpeg support.
-* icedtea-lcms-leak.patch: Fix LCMS memory leak.
-* icedtea-LCMS-setTagData.patch: Add support for setTagData to LCMS peer.
+* icedtea-lcms: Updates lcms to 1.18 and applies other security patches.
 * icedtea-lib64.patch: Add support for building on platforms with /usr/lib64.
 * icedtea-libraries.patch: Use system JPEG and zlib libraries.
 * icedtea-linker-options.patch: Add -Xlinker option when linking.
@@ -69,13 +68,11 @@
 * icedtea-f2i-overflow.patch: Replaces the code used by [fd]2[il] bytecodes to correctly handle overflows. (PR244, S6779290)
 * icedtea-6761856-freetypescaler.patch: Fix IcedTea bug #227, OpenJDK bug
   #6761856, swing TextLayout.getBounds() returns shifted bounds.
-* icedtea-display-mode-changer.patch: Add extra test class.
 * icedtea-testenv.patch: Provide public reachable machines for net/nio tests.
 * icedtea-samejvm-safe.patch: Add samejvmsafe dirs to TEST.ROOT.
 * icedtea-6728542-epoll.patch: Make EPoll work on non-x86 platforms. (PR265)
 * icedtea-fortify-source.patch: Fix build failures with -D_FORTIFY_SOURCE=2.
 * icedtea-format-warnings.patch: Fix build failures with -Wformat=1.
-* icedtea-io_util-overflow.patch: Replace some code to correctly handle overflows. (S6788196)
 * icedtea-cc-interp-jvmti.patch: Disable some JVMTI capabilities which are unsupported or do not work with the C++ interpreter.
 * icedtea-demo-swingapplet.patch: Add missing html file needed to run the demo.
 * icedtea-6791168.patch: Fix build failure with GCC-4.4 (PR 38725) and compiler warnings.
--- a/Makefile.am	Thu Apr 16 10:55:27 2009 -0400
+++ b/Makefile.am	Thu Apr 16 11:26:48 2009 -0400
@@ -1,6 +1,6 @@
-OPENJDK_DATE = 25_nov_2008
-OPENJDK_MD5SUM = 9f9773a822156dd3d576d83d794364ce
-OPENJDK_VERSION = b14
+OPENJDK_DATE = 13_apr_2009
+OPENJDK_MD5SUM = d395b4d4ac8b2aff70730b953f9e2736
+OPENJDK_VERSION = b16
 
 CACAO_VERSION = 0.99.3
 CACAO_MD5SUM = 80de3ad344c1a20c086ec5f1390bd1b8
@@ -106,8 +106,8 @@
 
 # OpenJDK build environment.
 OS_DIR = $(BUILD_OS_DIR)-$(BUILD_ARCH_DIR)
-BUILD_OUTPUT_DIR = openjdk/control/build/$(OS_DIR)
-ECJ_BUILD_OUTPUT_DIR = openjdk-ecj/control/build/$(OS_DIR)
+BUILD_OUTPUT_DIR = openjdk/build/$(OS_DIR)
+ECJ_BUILD_OUTPUT_DIR = openjdk-ecj/build/$(OS_DIR)
 ICEDTEA_BUILD_DIR = \
 	$(abs_top_builddir)/$(BUILD_OUTPUT_DIR)
 ICEDTEA_RT = \
@@ -544,23 +544,7 @@
 	patches/icedtea-javafiles.patch \
 	patches/icedtea-core-build.patch \
 	patches/icedtea-jvmtiEnv.patch \
-	patches/icedtea-lcms.patch \
-	patches/security/icedtea-6536193.patch \
-	patches/security/icedtea-6610888.patch \
-	patches/security/icedtea-6610896.patch \
-	patches/security/icedtea-6630639.patch \
-	patches/security/icedtea-6632886.patch \
-	patches/security/icedtea-6652463.patch \
-	patches/security/icedtea-6656633.patch \
-	patches/security/icedtea-6658158.patch \
-	patches/security/icedtea-6691246.patch \
-	patches/security/icedtea-6717680.patch \
-	patches/security/icedtea-6721651.patch \
-	patches/security/icedtea-6737315.patch \
-	patches/security/icedtea-6792554.patch \
-	patches/security/icedtea-6804996.patch \
-	patches/security/icedtea-6804997.patch \
-	patches/security/icedtea-6804998.patch
+	patches/icedtea-lcms.patch
 
 if WITH_ALT_HSBUILD
 ICEDTEA_PATCHES += \
@@ -615,11 +599,9 @@
 	patches/icedtea-linker-libs-order.patch \
 	patches/icedtea-f2i-overflow.patch \
 	patches/icedtea-6761856-freetypescaler.patch \
-	patches/icedtea-display-mode-changer.patch \
 	patches/icedtea-testenv.patch \
 	patches/icedtea-samejvm-safe.patch \
 	patches/icedtea-6728542-epoll.patch \
-	patches/icedtea-io_util-overflow.patch \
 	patches/icedtea-cc-interp-jvmti.patch \
 	patches/icedtea-pr261.patch \
 	patches/icedtea-doc-headers.patch \
@@ -1130,7 +1112,7 @@
 	stamps/pulse-java.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV) \
-	  -C openjdk/control/make/ \
+	  -C openjdk \
 	  $(ICEDTEA_BUILD_TARGET)
 	mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR)
 	mkdir -p $(BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR)
@@ -1197,7 +1179,7 @@
 	stamps/pulse-java.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV) \
-	  -C openjdk/control/make \
+	  -C openjdk \
 	  $(ICEDTEA_DEBUG_BUILD_TARGET)
 	mkdir -p $(BUILD_OUTPUT_DIR)-debug/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR)
 	mkdir -p $(BUILD_OUTPUT_DIR)-debug/j2re-image/lib/$(INSTALL_ARCH_DIR)
@@ -1260,7 +1242,7 @@
 clean-icedtea: stamps/extract.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV) \
-	  -C openjdk/control/make clobber
+	  -C openjdk clobber
 	rm -f stamps/icedtea.stamp stamps/icedtea-debug.stamp
 
 icedtea-against-icedtea: \
@@ -1287,7 +1269,7 @@
 	stamps/ports-ecj.stamp stamps/patch-ecj.stamp stamps/cacao.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV_ECJ) \
-	  -C openjdk-ecj/control/make \
+	  -C openjdk-ecj/make \
 	  $(ICEDTEA_BUILD_TARGET)
 	@echo "ecj-poured IcedTea is served:" \
 	  $(ECJ_BUILD_OUTPUT_DIR)
@@ -1309,13 +1291,13 @@
 	stamps/ports-ecj.stamp stamps/patch-ecj.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV_ECJ) \
-	  -C openjdk-ecj/control/make hotspot
+	  -C openjdk-ecj/make hotspot
 
 clean-icedtea-ecj: stamps/extract-ecj.stamp
 	rm -f stamps/icedtea-ecj.stamp
 	$(ARCH_PREFIX) $(MAKE) \
 	  $(ICEDTEA_ENV_ECJ) \
-	  -C openjdk-ecj/control/make clobber
+	  -C openjdk-ecj/make clobber
 
 stamps/icedtea-against-ecj.stamp: \
 	stamps/bootstrap-directory-symlink-ecj.stamp \
--- a/patches/ecj/icedtea.patch	Thu Apr 16 10:55:27 2009 -0400
+++ b/patches/ecj/icedtea.patch	Thu Apr 16 11:26:48 2009 -0400
@@ -1,6 +1,6 @@
 diff -Nru openjdk-ecj.orig/control/make/make/jdk-rules.gmk openjdk-ecj/control/make/make/jdk-rules.gmk
 --- openjdk-ecj.orig/control/make/make/jdk-rules.gmk	2008-10-20 18:45:00.000000000 +0100
-+++ openjdk-ecj/control/make/make/jdk-rules.gmk	2008-10-20 18:50:20.000000000 +0100
++++ openjdk-ecj/make/jdk-rules.gmk	2008-10-20 18:50:20.000000000 +0100
 @@ -58,7 +58,7 @@
  endif
  
--- a/patches/icedtea-bytebuffer-compact.patch	Thu Apr 16 10:55:27 2009 -0400
+++ b/patches/icedtea-bytebuffer-compact.patch	Thu Apr 16 11:26:48 2009 -0400
@@ -60,23 +60,3 @@
 +    }
 +
  }
---- ../openjdkb23/openjdk.old/jdk/src/share/classes/java/nio/Direct-X-Buffer.java	2007-10-30 04:36:08.000000000 -0400
-+++ openjdk/jdk/src/share/classes/java/nio/Direct-X-Buffer.java	2007-11-13 13:34:14.000000000 -0500
-@@ -354,6 +354,7 @@
-         unsafe.copyMemory(ix(pos), ix(0), rem << $LG_BYTES_PER_VALUE$);
-         position(rem);
-         limit(capacity());
-+	clearMark();
-         return this;
- #else[rw]
-         throw new ReadOnlyBufferException();
---- ../openjdkb23/openjdk.old/jdk/src/share/classes/java/nio/Heap-X-Buffer.java	2007-10-30 04:36:08.000000000 -0400
-+++ openjdk/jdk/src/share/classes/java/nio/Heap-X-Buffer.java	2007-11-13 13:34:27.000000000 -0500
-@@ -222,6 +222,7 @@
-         System.arraycopy(hb, ix(position()), hb, ix(0), remaining());
-         position(remaining());
-         limit(capacity());
-+	clearMark();
-         return this;
- #else[rw]
-         throw new ReadOnlyBufferException();
--- a/patches/icedtea-core-build.patch	Thu Apr 16 10:55:27 2009 -0400
+++ b/patches/icedtea-core-build.patch	Thu Apr 16 11:26:48 2009 -0400
@@ -1,6 +1,6 @@
 diff -ru openjdk.orig/control/make/make/hotspot-rules.gmk openjdk/control/make/hotspot-rules.gmk
 --- openjdk.orig/control/make/make/hotspot-rules.gmk	2007-10-12 08:45:09.000000000 +0100
-+++ openjdk/control/make/make/hotspot-rules.gmk	2007-11-08 09:40:57.000000000 +0000
++++ openjdk/make/hotspot-rules.gmk	2007-11-08 09:40:57.000000000 +0000
 @@ -72,6 +72,10 @@
    HOTSPOT_TARGET = all_fastdebug
  endif
--- a/patches/icedtea-display-mode-changer.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-6733718: test /java/awt/FullScreen/UninitializedDisplayModeChangeTest/ fails
-Reviewed-by: igor
-
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ openjdk/jdk/test/java/awt/FullScreen/UninitializedDisplayModeChangeTest/DisplayModeChanger.java	Tue Aug 05 09:37:03 2008 -0700
-@@ -0,0 +1,93 @@
-+/*
-+ * Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+import java.awt.DisplayMode;
-+import java.awt.EventQueue;
-+import java.awt.Frame;
-+import java.awt.GraphicsDevice;
-+import java.awt.GraphicsEnvironment;
-+import java.lang.reflect.InvocationTargetException;
-+
-+/**
-+ * Used by the UninitializedDisplayModeChangeTest to change the
-+ * display mode.
-+ */
-+public class DisplayModeChanger {
-+
-+    public static void main(String[] args)
-+        throws InterruptedException, InvocationTargetException
-+    {
-+        final GraphicsDevice gd =
-+            GraphicsEnvironment.getLocalGraphicsEnvironment().
-+                getDefaultScreenDevice();
-+
-+        EventQueue.invokeAndWait(new Runnable() {
-+            public void run() {
-+                Frame f = null;
-+                if (gd.isFullScreenSupported()) {
-+                    try {
-+                        f = new Frame("DisplayChanger Frame");
-+                        gd.setFullScreenWindow(f);
-+                        if (gd.isDisplayChangeSupported()) {
-+                            DisplayMode dm = findDisplayMode(gd);
-+                            if (gd != null) {
-+                                gd.setDisplayMode(dm);
-+                            }
-+                        }
-+                        try {
-+                            Thread.sleep(1000);
-+                        } catch (InterruptedException ex) {
-+                            ex.printStackTrace();
-+                        }
-+                        gd.setFullScreenWindow(null);
-+                    } finally {
-+                        if (f != null) {
-+                            f.dispose();
-+                        }
-+                    }
-+                }
-+            }
-+        });
-+    }
-+
-+    /**
-+     * Finds a display mode that is different from the current display
-+     * mode and is likely to cause a display change event.
-+     */
-+    private static DisplayMode findDisplayMode(GraphicsDevice gd) {
-+        DisplayMode dms[] = gd.getDisplayModes();
-+        DisplayMode currentDM = gd.getDisplayMode();
-+        for (DisplayMode dm : dms) {
-+            if (!dm.equals(currentDM) &&
-+                 dm.getRefreshRate() == currentDM.getRefreshRate())
-+            {
-+                // different from the current dm and refresh rate is the same
-+                // means that something else is different => more likely to
-+                // cause a DM change event
-+                return dm;
-+            }
-+        }
-+        return null;
-+    }
-+
-+}
-
--- a/patches/icedtea-io_util-overflow.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-diff -r 201a75db9b35 openjdk/jdk/src/share/native/java/io/io_util.c
---- openjdk/jdk/src/share/native/java/io/io_util.c	Mon Dec 22 12:32:44 2008 +0000
-+++ openjdk/jdk/src/share/native/java/io/io_util.c	Mon Dec 22 12:48:49 2008 +0000
-@@ -25,6 +25,7 @@
- 
- #include <stdlib.h>
- #include <string.h>
-+#include <assert.h>
- 
- #include "jni.h"
- #include "jni_util.h"
-@@ -73,9 +74,10 @@
-         return -1;
-     }
-     datalen = (*env)->GetArrayLength(env, bytes);
-+    assert(datalen >= 0);
- 
--    if ((off < 0) || (off > datalen) ||
--        (len < 0) || ((off + len) > datalen) || ((off + len) < 0)) {
-+    if ((off < 0) || (len < 0) ||
-+        (((uint32_t) off + (uint32_t) len) > (uint32_t) datalen)) {
-         JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0);
-         return -1;
-     }
-@@ -146,9 +148,10 @@
-         return;
-     }
-     datalen = (*env)->GetArrayLength(env, bytes);
-+    assert(datalen >= 0);
- 
--    if ((off < 0) || (off > datalen) ||
--        (len < 0) || ((off + len) > datalen) || ((off + len) < 0)) {
-+    if ((off < 0) || (len < 0) ||
-+        (((uint32_t) off + (uint32_t) len) > (uint32_t) datalen)) {
-         JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0);
-         return;
-     }
--- a/patches/icedtea-jdk-docs-target.patch	Thu Apr 16 10:55:27 2009 -0400
+++ b/patches/icedtea-jdk-docs-target.patch	Thu Apr 16 11:26:48 2009 -0400
@@ -1,5 +1,5 @@
 --- openjdk/control/make/make/jdk-rules.gmk	2008-06-29 10:09:47.002591764 +0000
-+++ openjdk/control/make/make/jdk-rules.gmk	2008-06-29 15:04:01.228901751 +0000
++++ openjdk/make/jdk-rules.gmk	2008-06-29 15:04:01.228901751 +0000
 @@ -36,12 +36,7 @@
    IMAGES_TARGET = images
  endif
--- a/patches/icedtea-shark-build.patch	Thu Apr 16 10:55:27 2009 -0400
+++ b/patches/icedtea-shark-build.patch	Thu Apr 16 11:26:48 2009 -0400
@@ -1,6 +1,6 @@
 diff -r 8e41d25d7665 openjdk/control/make/make/hotspot-rules.gmk
 --- openjdk/control/make/make/hotspot-rules.gmk	Fri Jun 20 13:26:10 2008 +0100
-+++ openjdk/control/make/make/hotspot-rules.gmk	Fri Jun 20 13:26:20 2008 +0100
++++ openjdk/make/hotspot-rules.gmk	Fri Jun 20 13:26:20 2008 +0100
 @@ -75,6 +75,9 @@ ifdef ICEDTEA_CORE_BUILD
  ifdef ICEDTEA_CORE_BUILD
    HOTSPOT_TARGET := $(HOTSPOT_TARGET)core
--- a/patches/icedtea-version.patch	Thu Apr 16 10:55:27 2009 -0400
+++ b/patches/icedtea-version.patch	Thu Apr 16 11:26:48 2009 -0400
@@ -1,18 +1,4 @@
---- openjdk/langtools/make/Makefile.orig
-+++ openjdk/langtools/make/Makefile
-@@ -82,7 +82,11 @@
- endif 
- 
- ifdef MILESTONE
-+ifneq ($(MILESTONE),fcs)
-   ANT_OPTIONS += -Dmilestone=$(MILESTONE)
-+else
-+  ANT_OPTIONS += -Drelease=$(JDK_VERSION)
-+endif
- endif
- 
- ifdef BUILD_NUMBER
---- ../openjdk6/jdk/make/common/shared/Defs.gmk	2008-08-28 04:10:47.000000000 -0400
+--- openjdkold/jdk/make/common/shared/Defs.gmk	2008-08-28 04:10:47.000000000 -0400
 +++ openjdk/jdk/make/common/shared/Defs.gmk	2009-02-08 08:30:21.000000000 -0500
 @@ -194,7 +194,7 @@
  
--- a/patches/security/icedtea-6536193.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
---- old/src/share/classes/com/sun/xml/internal/bind/v2/runtime/output/UTF8XmlOutput.java	Tue Mar  3 11:34:51 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/bind/v2/runtime/output/UTF8XmlOutput.java	Tue Mar  3 11:34:50 2009
-@@ -1,27 +1,3 @@
--/*
-- * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
-- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-- *
-- * This code is free software; you can redistribute it and/or modify it
-- * under the terms of the GNU General Public License version 2 only, as
-- * published by the Free Software Foundation.  Sun designates this
-- * particular file as subject to the "Classpath" exception as provided
-- * by Sun in the LICENSE file that accompanied this code.
-- *
-- * This code is distributed in the hope that it will be useful, but WITHOUT
-- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-- * version 2 for more details (a copy is included in the LICENSE file that
-- * accompanied this code).
-- *
-- * You should have received a copy of the GNU General Public License version
-- * 2 along with this work; if not, write to the Free Software Foundation,
-- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-- *
-- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-- * CA 95054 USA or visit www.sun.com if you need additional information or
-- * have any questions.
-- */
- package com.sun.xml.internal.bind.v2.runtime.output;
- 
- import java.io.IOException;
-@@ -32,6 +8,7 @@
- import com.sun.xml.internal.bind.DatatypeConverterImpl;
- import com.sun.xml.internal.bind.v2.runtime.Name;
- import com.sun.xml.internal.bind.v2.runtime.XMLSerializer;
-+import com.sun.xml.internal.bind.v2.runtime.MarshallerImpl;
- 
- import org.xml.sax.SAXException;
- 
-@@ -81,6 +58,11 @@
-     protected boolean closeStartTagPending = false;
- 
-     /**
-+     * @see MarshallerImpl#header
-+     */
-+    private String header;
-+
-+    /**
-      *
-      * @param localNames
-      *      local names encoded in UTF-8.
-@@ -92,6 +74,10 @@
-             prefixes[i] = new Encoded();
-     }
- 
-+    public void setHeader(String header) {
-+        this.header = header;
-+    }
-+
-     @Override
-     public void startDocument(XMLSerializer serializer, boolean fragment, int[] nsUriIndex2prefixIndex, NamespaceContextImpl nsContext) throws IOException, SAXException, XMLStreamException {
-         super.startDocument(serializer, fragment,nsUriIndex2prefixIndex,nsContext);
-@@ -100,6 +86,10 @@
-         if(!fragment) {
-             write(XML_DECL);
-         }
-+        if(header!=null) {
-+            textBuffer.set(header);
-+            textBuffer.write(this);
-+        }
-     }
- 
-     public void endDocument(boolean fragment) throws IOException, SAXException, XMLStreamException {
-@@ -383,11 +373,23 @@
-         return buf;
-     }
- 
--    private static final byte[] XMLNS_EQUALS = toBytes(" xmlns=\"");
--    private static final byte[] XMLNS_COLON = toBytes(" xmlns:");
--    private static final byte[] EQUALS = toBytes("=\"");
--    private static final byte[] CLOSE_TAG = toBytes("</");
--    private static final byte[] EMPTY_TAG = toBytes("/>");
-+    // per instance copy to prevent an attack where malicious OutputStream
-+    // rewrites the byte array.
-+    private final byte[] XMLNS_EQUALS = _XMLNS_EQUALS.clone();
-+    private final byte[] XMLNS_COLON = _XMLNS_COLON.clone();
-+    private final byte[] EQUALS = _EQUALS.clone();
-+    private final byte[] CLOSE_TAG = _CLOSE_TAG.clone();
-+    private final byte[] EMPTY_TAG = _EMPTY_TAG.clone();
-+    private final byte[] XML_DECL = _XML_DECL.clone();
-+
-+    // masters
-+    private static final byte[] _XMLNS_EQUALS = toBytes(" xmlns=\"");
-+    private static final byte[] _XMLNS_COLON = toBytes(" xmlns:");
-+    private static final byte[] _EQUALS = toBytes("=\"");
-+    private static final byte[] _CLOSE_TAG = toBytes("</");
-+    private static final byte[] _EMPTY_TAG = toBytes("/>");
-+    private static final byte[] _XML_DECL = toBytes("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
-+
-+    // no need to copy
-     private static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
--    private static final byte[] XML_DECL = toBytes("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
- }
--- a/patches/security/icedtea-6610888.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
---- old/src/share/classes/javax/management/monitor/Monitor.java	Mon Mar  9 17:21:12 2009
-+++ openjdk/jdk/src/share/classes/javax/management/monitor/Monitor.java	Mon Mar  9 17:21:11 2009
-@@ -37,6 +37,7 @@
- import java.security.AccessControlContext;
- import java.security.AccessController;
- import java.security.PrivilegedAction;
-+import java.security.ProtectionDomain;
- import java.util.List;
- import java.util.concurrent.CopyOnWriteArrayList;
- import java.util.concurrent.ExecutorService;
-@@ -170,7 +171,10 @@
-     /**
-      * AccessControlContext of the Monitor.start() caller.
-      */
--    private AccessControlContext acc;
-+    private static final AccessControlContext noPermissionsACC =
-+            new AccessControlContext(
-+            new ProtectionDomain[] {new ProtectionDomain(null, null)});
-+    private volatile AccessControlContext acc = noPermissionsACC;
- 
-     /**
-      * Scheduler Service.
-@@ -755,7 +759,7 @@
- 
-             // Reset the AccessControlContext.
-             //
--            acc = null;
-+            acc = noPermissionsACC;
- 
-             // Reset the complex type attribute information
-             // such that it is recalculated again.
-@@ -1555,10 +1559,12 @@
- 
-         public void run() {
-             final ScheduledFuture<?> sf;
-+            final AccessControlContext ac;
-             synchronized (Monitor.this) {
-                 sf = Monitor.this.schedulerFuture;
-+                ac = Monitor.this.acc;
-             }
--            AccessController.doPrivileged(new PrivilegedAction<Void>() {
-+            PrivilegedAction<Void> action = new PrivilegedAction<Void>() {
-                 public Void run() {
-                     if (Monitor.this.isActive()) {
-                         final int an[] = alreadyNotifieds;
-@@ -1571,7 +1577,11 @@
-                     }
-                     return null;
-                 }
--            }, Monitor.this.acc);
-+            };
-+            if (ac == null) {
-+                throw new SecurityException("AccessControlContext cannot be null");
-+            }
-+            AccessController.doPrivileged(action, ac);
-             synchronized (Monitor.this) {
-                 if (Monitor.this.isActive() &&
-                     Monitor.this.schedulerFuture == sf) {
--- a/patches/security/icedtea-6610896.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
---- old/src/share/classes/javax/management/monitor/Monitor.java	Mon Mar  9 16:53:02 2009
-+++ openjdk/jdk/src/share/classes/javax/management/monitor/Monitor.java	Mon Mar  9 16:53:01 2009
-@@ -38,8 +38,9 @@
- import java.security.AccessController;
- import java.security.PrivilegedAction;
- import java.util.List;
-+import java.util.Map;
-+import java.util.WeakHashMap;
- import java.util.concurrent.CopyOnWriteArrayList;
--import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.Future;
- import java.util.concurrent.LinkedBlockingQueue;
-@@ -180,14 +181,20 @@
-             new DaemonThreadFactory("Scheduler"));
- 
-     /**
--     * Maximum Pool Size
-+     * Map containing the thread pool executor per thread group.
-      */
--    private static final int maximumPoolSize;
-+    private static final Map<ThreadPoolExecutor, Void> executors =
-+            new WeakHashMap<ThreadPoolExecutor, Void>();
- 
-     /**
--     * Executor Service.
-+     * Lock for executors map.
-      */
--    private static final ExecutorService executor;
-+    private static final Object executorsLock = new Object();
-+
-+    /**
-+     * Maximum Pool Size
-+     */
-+    private static final int maximumPoolSize;
-     static {
-         final String maximumPoolSizeSysProp = "jmx.x.monitor.maximum.pool.size";
-         final String maximumPoolSizeStr = AccessController.doPrivileged(
-@@ -217,22 +224,9 @@
-                 maximumPoolSize = maximumPoolSizeTmp;
-             }
-         }
--        executor = new ThreadPoolExecutor(
--                maximumPoolSize,
--                maximumPoolSize,
--                60L,
--                TimeUnit.SECONDS,
--                new LinkedBlockingQueue<Runnable>(),
--                new DaemonThreadFactory("Executor"));
--        ((ThreadPoolExecutor)executor).allowCoreThreadTimeOut(true);
-     }
- 
-     /**
--     * Monitor task to be executed by the Executor Service.
--     */
--    private final MonitorTask monitorTask = new MonitorTask();
--
--    /**
-      * Future associated to the current monitor task.
-      */
-     private Future<?> monitorFuture;
-@@ -240,7 +234,7 @@
-     /**
-      * Scheduler task to be executed by the Scheduler Service.
-      */
--    private final SchedulerTask schedulerTask = new SchedulerTask(monitorTask);
-+    private final SchedulerTask schedulerTask = new SchedulerTask();
- 
-     /**
-      * ScheduledFuture associated to the current scheduler task.
-@@ -726,6 +720,7 @@
-             // Start the scheduler.
-             //
-             cleanupFutures();
-+            schedulerTask.setMonitorTask(new MonitorTask());
-             schedulerFuture = scheduler.schedule(schedulerTask,
-                                                  getGranularityPeriod(),
-                                                  TimeUnit.MILLISECONDS);
-@@ -1505,7 +1500,7 @@
-      */
-     private class SchedulerTask implements Runnable {
- 
--        private Runnable task = null;
-+        private MonitorTask task;
- 
-         /*
-          * ------------------------------------------
-@@ -1513,7 +1508,16 @@
-          * ------------------------------------------
-          */
- 
--        public SchedulerTask(Runnable task) {
-+        public SchedulerTask() {
-+        }
-+
-+        /*
-+         * ------------------------------------------
-+         *  GETTERS/SETTERS
-+         * ------------------------------------------
-+         */
-+
-+        public void setMonitorTask(MonitorTask task) {
-             this.task = task;
-         }
- 
-@@ -1525,7 +1529,7 @@
- 
-         public void run() {
-             synchronized (Monitor.this) {
--                Monitor.this.monitorFuture = executor.submit(task);
-+                Monitor.this.monitorFuture = task.submit();
-             }
-         }
-     }
-@@ -1538,6 +1542,8 @@
-      */
-     private class MonitorTask implements Runnable {
- 
-+        private ThreadPoolExecutor executor;
-+
-         /*
-          * ------------------------------------------
-          *  CONSTRUCTORS
-@@ -1545,6 +1551,38 @@
-          */
- 
-         public MonitorTask() {
-+            // Find out if there's already an existing executor for the calling
-+            // thread and reuse it. Otherwise, create a new one and store it in
-+            // the executors map. If there is a SecurityManager, the group of
-+            // System.getSecurityManager() is used, else the group of the thread
-+            // instantiating this MonitorTask, i.e. the group of the thread that
-+            // calls "Monitor.start()".
-+            SecurityManager s = System.getSecurityManager();
-+            ThreadGroup group = (s != null) ? s.getThreadGroup() :
-+                Thread.currentThread().getThreadGroup();
-+            synchronized (executorsLock) {
-+                for (ThreadPoolExecutor e : executors.keySet()) {
-+                    DaemonThreadFactory tf =
-+                            (DaemonThreadFactory) e.getThreadFactory();
-+                    ThreadGroup tg = tf.getThreadGroup();
-+                    if (tg == group) {
-+                        executor = e;
-+                        break;
-+                    }
-+                }
-+                if (executor == null) {
-+                    executor = new ThreadPoolExecutor(
-+                            maximumPoolSize,
-+                            maximumPoolSize,
-+                            60L,
-+                            TimeUnit.SECONDS,
-+                            new LinkedBlockingQueue<Runnable>(),
-+                            new DaemonThreadFactory("ThreadGroup<" +
-+                            group.getName() + "> Executor", group));
-+                    executor.allowCoreThreadTimeOut(true);
-+                    executors.put(executor, null);
-+                }
-+            }
-         }
- 
-         /*
-@@ -1553,6 +1591,10 @@
-          * ------------------------------------------
-          */
- 
-+        public Future<?> submit() {
-+            return executor.submit(this);
-+        }
-+
-         public void run() {
-             final ScheduledFuture<?> sf;
-             synchronized (Monitor.this) {
-@@ -1611,6 +1653,15 @@
-             namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
-         }
- 
-+        public DaemonThreadFactory(String poolName, ThreadGroup threadGroup) {
-+            group = threadGroup;
-+            namePrefix = "JMX Monitor " + poolName + " Pool [Thread-";
-+        }
-+
-+        public ThreadGroup getThreadGroup() {
-+            return group;
-+        }
-+
-         public Thread newThread(Runnable r) {
-             Thread t = new Thread(group,
-                                   r,
--- a/patches/security/icedtea-6630639.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
---- old/src/share/classes/sun/net/httpserver/Request.java	Wed Mar  4 03:29:39 2009
-+++ openjdk/jdk/src/share/classes/sun/net/httpserver/Request.java	Wed Mar  4 03:29:39 2009
-@@ -52,6 +52,9 @@
-         os = rawout;
-         do {
-             startLine = readLine();
-+            if (startLine == null) {
-+                return;
-+            }
-             /* skip blank lines */
-         } while (startLine.equals (""));
-     }
---- old/src/share/classes/sun/net/httpserver/ServerImpl.java	Wed Mar  4 03:29:41 2009
-+++ openjdk/jdk/src/share/classes/sun/net/httpserver/ServerImpl.java	Wed Mar  4 03:29:41 2009
-@@ -437,6 +437,7 @@
-                         rawin = sslStreams.getInputStream();
-                         rawout = sslStreams.getOutputStream();
-                         engine = sslStreams.getSSLEngine();
-+                        connection.sslStreams = sslStreams;
-                     } else {
-                         rawin = new BufferedInputStream(
-                             new Request.ReadStream (
-@@ -446,6 +447,8 @@
-                             ServerImpl.this, chan
-                         );
-                     }
-+                    connection.raw = rawin;
-+                    connection.rawout = rawout;
-                 }
-                 Request req = new Request (rawin, rawout);
-                 requestLine = req.requestLine();
--- a/patches/security/icedtea-6632886.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,502 +0,0 @@
---- old/src/share/classes/java/awt/Font.java	Tue Mar  3 14:12:23 2009
-+++ openjdk/jdk/src/share/classes/java/awt/Font.java	Tue Mar  3 14:12:23 2009
-@@ -37,6 +37,8 @@
- import java.awt.peer.FontPeer;
- import java.io.*;
- import java.lang.ref.SoftReference;
-+import java.security.AccessController;
-+import java.security.PrivilegedExceptionAction;
- import java.text.AttributedCharacterIterator.Attribute;
- import java.text.CharacterIterator;
- import java.text.StringCharacterIterator;
-@@ -51,6 +53,7 @@
- import sun.font.AttributeValues;
- import sun.font.EAttribute;
- import sun.font.CompositeFont;
-+import sun.font.CreatedFontTracker;
- import sun.font.Font2D;
- import sun.font.Font2DHandle;
- import sun.font.FontManager;
-@@ -575,7 +578,8 @@
-     }
- 
-     /* used to implement Font.createFont */
--    private Font(File fontFile, int fontFormat, boolean isCopy)
-+    private Font(File fontFile, int fontFormat,
-+                 boolean isCopy, CreatedFontTracker tracker)
-         throws FontFormatException {
-         this.createdFont = true;
-         /* Font2D instances created by this method track their font file
-@@ -582,7 +586,8 @@
-          * so that when the Font2D is GC'd it can also remove the file.
-          */
-         this.font2DHandle =
--            FontManager.createFont2D(fontFile, fontFormat, isCopy).handle;
-+            FontManager.createFont2D(fontFile, fontFormat,
-+                                     isCopy, tracker).handle;
-         this.name = this.font2DHandle.font2D.getFontName(Locale.getDefault());
-         this.style = Font.PLAIN;
-         this.size = 1;
-@@ -788,6 +793,29 @@
-     }
- 
-     /**
-+     * Used with the byte count tracker for fonts created from streams.
-+     * If a thread can create temp files anyway, no point in counting
-+     * font bytes.
-+     */
-+    private static boolean hasTempPermission() {
-+
-+        if (System.getSecurityManager() == null) {
-+            return true;
-+        }
-+        File f = null;
-+        boolean hasPerm = false;
-+        try {
-+            f = File.createTempFile("+~JT", ".tmp", null);
-+            f.delete();
-+            f = null;
-+            hasPerm = true;
-+        } catch (Throwable t) {
-+            /* inc. any kind of SecurityException */
-+        }
-+        return hasPerm;
-+    }
-+
-+    /**
-      * Returns a new <code>Font</code> using the specified font type
-      * and input data.  The new <code>Font</code> is
-      * created with a point size of 1 and style {@link #PLAIN PLAIN}.
-@@ -822,58 +850,96 @@
-             fontFormat != Font.TYPE1_FONT) {
-             throw new IllegalArgumentException ("font format not recognized");
-         }
--        final InputStream fStream = fontStream;
--        Object ret = java.security.AccessController.doPrivileged(
--           new java.security.PrivilegedAction() {
--              public Object run() {
--                  File tFile = null;
--                  FileOutputStream outStream = null;
--                  try {
--                      tFile = File.createTempFile("+~JF", ".tmp", null);
--                      /* Temp file deleted by font shutdown hook */
--                      BufferedInputStream inStream =
--                          new BufferedInputStream(fStream);
--                      outStream = new FileOutputStream(tFile);
--                      int bytesRead = 0;
--                      int bufSize = 8192;
--                      byte [] buf = new byte[bufSize];
--                      while (bytesRead != -1) {
--                          try {
--                              bytesRead = inStream.read(buf, 0, bufSize);
--                          } catch (Throwable t) {
--                              throw new IOException();
--                          }
--                          if (bytesRead != -1) {
--                              outStream.write(buf, 0, bytesRead);
--                          }
--                      }
--                      /* don't close the input stream */
--                      outStream.close();
--                  } catch (IOException e) {
--                      if (outStream != null) {
--                          try {
--                              outStream.close();
--                          } catch (Exception e1) {
--                          }
--                      }
--                      if (tFile != null) {
--                          try {
--                              tFile.delete();
--                          }  catch (Exception e2) {
--                          }
--                      }
--                      return e;
--                  }
--                  return tFile;
--              }
--          });
-+        boolean copiedFontData = false;
- 
--        if (ret instanceof File) {
--            return new Font((File)ret, fontFormat, true);
--        } else if (ret instanceof IOException) {
--            throw (IOException)ret;
--        } else {
--            throw new FontFormatException("Couldn't access font stream");
-+        try {
-+            final File tFile = AccessController.doPrivileged(
-+                new PrivilegedExceptionAction<File>() {
-+                    public File run() throws IOException {
-+                        return File.createTempFile("+~JF", ".tmp", null);
-+                    }
-+                }
-+            );
-+
-+            int totalSize = 0;
-+            CreatedFontTracker tracker = null;
-+            try {
-+                final OutputStream outStream =
-+                    AccessController.doPrivileged(
-+                        new PrivilegedExceptionAction<OutputStream>() {
-+                            public OutputStream run() throws IOException {
-+                                return new FileOutputStream(tFile);
-+                            }
-+                        }
-+                    );
-+                if (!hasTempPermission()) {
-+                    tracker = CreatedFontTracker.getTracker();
-+                }
-+                try {
-+                    byte[] buf = new byte[8192]; 
-+                    for (;;) {
-+                        int bytesRead = fontStream.read(buf);
-+                        if (bytesRead < 0) {
-+                            break;
-+                        }
-+                        if (tracker != null) {
-+                            if (totalSize+bytesRead > tracker.MAX_FILE_SIZE) {
-+                                throw new IOException("File too big.");
-+                            }
-+                            if (totalSize+tracker.getNumBytes() >
-+                                tracker.MAX_TOTAL_BYTES)
-+                              {
-+                                throw new IOException("Total files too big.");
-+                            }
-+                            totalSize += bytesRead;
-+                            tracker.addBytes(bytesRead);
-+                        }
-+                        outStream.write(buf, 0, bytesRead);
-+                    }
-+                    /* don't close the input stream */
-+                } finally {
-+                    outStream.close();
-+                }
-+                /* After all references to a Font2D are dropped, the file
-+                 * will be removed. To support long-lived AppContexts,
-+                 * we need to then decrement the byte count by the size
-+                 * of the file.
-+                 * If the data isn't a valid font, the implementation will
-+                 * delete the tmp file and decrement the byte count
-+                 * in the tracker object before returning from the
-+                 * constructor, so we can set 'copiedFontData' to true here
-+                 * without waiting for the results of that constructor.
-+                 */
-+                copiedFontData = true;
-+                Font font = new Font(tFile, fontFormat, true, tracker);
-+                return font;
-+            } finally {
-+                if (!copiedFontData) {
-+                    if (tracker != null) {
-+                        tracker.subBytes(totalSize);
-+                    }
-+                    AccessController.doPrivileged(
-+                        new PrivilegedExceptionAction<Void>() {
-+                            public Void run() {
-+                                tFile.delete();
-+                                return null;
-+                            }
-+                        }
-+                    );
-+                }
-+            }
-+        } catch (Throwable t) {
-+            if (t instanceof FontFormatException) {
-+                throw (FontFormatException)t;
-+            }
-+            if (t instanceof IOException) {
-+                throw (IOException)t;
-+            }
-+            Throwable cause = t.getCause();
-+            if (cause instanceof FontFormatException) {
-+                throw (FontFormatException)cause;
-+            }
-+            throw new IOException("Problem reading font data.");
-         }
-     }
- 
-@@ -913,6 +979,9 @@
-      */
-     public static Font createFont(int fontFormat, File fontFile)
-         throws java.awt.FontFormatException, java.io.IOException {
-+
-+        fontFile = new File(fontFile.getPath());
-+
-         if (fontFormat != Font.TRUETYPE_FONT &&
-             fontFormat != Font.TYPE1_FONT) {
-             throw new IllegalArgumentException ("font format not recognized");
-@@ -926,7 +995,7 @@
-         if (!fontFile.canRead()) {
-             throw new IOException("Can't read " + fontFile);
-         }
--        return new Font(fontFile, fontFormat, false);
-+        return new Font(fontFile, fontFormat, false, null);
-     }
- 
-     /**
---- old/src/share/classes/sun/font/FileFont.java	Tue Mar  3 14:12:26 2009
-+++ openjdk/jdk/src/share/classes/sun/font/FileFont.java	Tue Mar  3 14:12:25 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -125,9 +125,9 @@
-         return true;
-     }
- 
--    void setFileToRemove(File file) {
-+    void setFileToRemove(File file, CreatedFontTracker tracker) {
-         Disposer.addObjectRecord(this,
--                                 new CreatedFontFileDisposerRecord(file));
-+                         new CreatedFontFileDisposerRecord(file, tracker));
-     }
- 
-     /* This is called when a font scaler is determined to
-@@ -246,12 +246,16 @@
-         return getScaler().getUnitsPerEm();
-     }
- 
--    private static class CreatedFontFileDisposerRecord implements DisposerRecord {
-+    private static class CreatedFontFileDisposerRecord
-+        implements DisposerRecord {
- 
-         File fontFile = null;
-+        CreatedFontTracker tracker;
- 
--        private CreatedFontFileDisposerRecord(File file) {
-+        private CreatedFontFileDisposerRecord(File file,
-+                                              CreatedFontTracker tracker) {
-             fontFile = file;
-+            this.tracker = tracker;
-         }
- 
-         public void dispose() {
-@@ -260,6 +264,9 @@
-                       public Object run() {
-                           if (fontFile != null) {
-                               try {
-+                                  if (tracker != null) {
-+                                      tracker.subBytes((int)fontFile.length());
-+                                  }
-                                   /* REMIND: is it possible that the file is
-                                    * still open? It will be closed when the
-                                    * font2D is disposed but could this code
---- old/src/share/classes/sun/font/FontManager.java	Tue Mar  3 14:12:29 2009
-+++ openjdk/jdk/src/share/classes/sun/font/FontManager.java	Tue Mar  3 14:12:28 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2003-2007 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -2331,12 +2331,14 @@
-     static Vector<File> tmpFontFiles = null;
- 
-     public static Font2D createFont2D(File fontFile, int fontFormat,
--                                      boolean isCopy)
-+                                      boolean isCopy,
-+                                      CreatedFontTracker tracker)
-         throws FontFormatException {
- 
-         String fontFilePath = fontFile.getPath();
-         FileFont font2D = null;
-         final File fFile = fontFile;
-+        final CreatedFontTracker _tracker = tracker;
-         try {
-             switch (fontFormat) {
-             case Font.TRUETYPE_FONT:
-@@ -2343,7 +2345,7 @@
-                 font2D = new TrueTypeFont(fontFilePath, null, 0, true);
-                 break;
-             case Font.TYPE1_FONT:
--                font2D = new Type1Font(fontFilePath, null);
-+                font2D = new Type1Font(fontFilePath, null, isCopy);
-                 break;
-             default:
-                 throw new FontFormatException("Unrecognised Font Format");
-@@ -2353,6 +2355,9 @@
-                 java.security.AccessController.doPrivileged(
-                      new java.security.PrivilegedAction() {
-                           public Object run() {
-+                              if (_tracker != null) {
-+                                  _tracker.subBytes((int)fFile.length());
-+                              }
-                               fFile.delete();
-                               return null;
-                           }
-@@ -2361,7 +2366,7 @@
-             throw(e);
-         }
-         if (isCopy) {
--            font2D.setFileToRemove(fontFile);
-+            font2D.setFileToRemove(fontFile, tracker);
-             synchronized (FontManager.class) {
- 
-                 if (tmpFontFiles == null) {
---- /dev/null	Tue Mar  3 14:12:32 2009
-+++ openjdk/jdk/src/share/classes/sun/font/CreatedFontTracker.java	Tue Mar  3 14:12:31 2009
-@@ -0,0 +1,54 @@
-+/*
-+ * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+
-+package sun.font;
-+
-+public class CreatedFontTracker {
-+
-+    public static final int MAX_FILE_SIZE = 32 * 1024 * 1024;
-+    public static final int MAX_TOTAL_BYTES = 10 * MAX_FILE_SIZE;
-+
-+    static int numBytes;
-+    static CreatedFontTracker tracker;
-+
-+    public static synchronized CreatedFontTracker getTracker() {
-+        if (tracker == null) {
-+            tracker = new CreatedFontTracker();
-+        }
-+        return tracker;
-+    }
-+
-+    public synchronized int getNumBytes() {
-+        return numBytes;
-+    }
-+
-+    public synchronized void addBytes(int sz) {
-+        numBytes += sz;
-+    }
-+
-+    public synchronized void subBytes(int sz) {
-+        numBytes -= sz;
-+    }
-+}
---- old/src/share/classes/sun/font/TrueTypeFont.java	Tue Mar  3 14:12:34 2009
-+++ openjdk/jdk/src/share/classes/sun/font/TrueTypeFont.java	Tue Mar  3 14:12:33 2009
-@@ -174,8 +174,17 @@
-         super(platname, nativeNames);
-         useJavaRasterizer = javaRasterizer;
-         fontRank = Font2D.TTF_RANK;
--        verify();
--        init(fIndex);
-+        try {
-+            verify();
-+            init(fIndex);
-+        } catch (Throwable t) {
-+            close();
-+            if (t instanceof FontFormatException) {
-+                throw (FontFormatException)t;
-+            } else {
-+                throw new FontFormatException("Unexpected runtime exception.");
-+            }
-+        }
-         Disposer.addObjectRecord(this, disposerRecord);
-     }
- 
---- old/src/share/classes/sun/font/Type1Font.java	Tue Mar  3 14:12:37 2009
-+++ openjdk/jdk/src/share/classes/sun/font/Type1Font.java	Tue Mar  3 14:12:36 2009
-@@ -39,6 +39,7 @@
- import java.nio.channels.ClosedChannelException;
- import java.nio.channels.FileChannel;
- import sun.java2d.Disposer;
-+import sun.java2d.DisposerRecord;
- import java.util.HashSet;
- import java.util.HashMap;
- import java.awt.Font;
-@@ -76,6 +77,27 @@
-  */
- public class Type1Font extends FileFont {
- 
-+     private static class T1DisposerRecord  implements DisposerRecord {
-+        String fileName = null;
-+
-+        T1DisposerRecord(String name) {
-+            fileName = name;
-+        }
-+
-+        public synchronized void dispose() {
-+            java.security.AccessController.doPrivileged(
-+	        new java.security.PrivilegedAction() {
-+	            public Object run() {
-+
-+                        if (fileName != null) {
-+                            (new java.io.File(fileName)).delete();
-+                        }
-+                        return null;
-+		    }
-+	     });
-+        }
-+    }
-+
-     WeakReference bufferRef = new WeakReference(null);
- 
-     private String psName = null;
-@@ -125,6 +147,17 @@
- 
- 
-     /**
-+     * Constructs a Type1 Font.
-+     * @param platname - Platform identifier of the font. Typically file name.
-+     * @param nativeNames - Native names - typically XLFDs on Unix.
-+     */
-+    public Type1Font(String platname, Object nativeNames)
-+        throws FontFormatException {
-+
-+        this(platname, nativeNames, false);
-+    }
-+
-+    /**
-      * - does basic verification of the file
-      * - reads the names (full, family).
-      * - determines the style of the font.
-@@ -131,12 +164,25 @@
-      * @throws FontFormatException - if the font can't be opened
-      * or fails verification,  or there's no usable cmap
-      */
--    public Type1Font(String platname, Object nativeNames)
-+    public Type1Font(String platname, Object nativeNames, boolean createdCopy)
-         throws FontFormatException {
-         super(platname, nativeNames);
-         fontRank = Font2D.TYPE1_RANK;
-         checkedNatives = true;
--        verify();
-+        try {
-+            verify();
-+        } catch (Throwable t) {
-+            if (createdCopy) {
-+                T1DisposerRecord ref = new T1DisposerRecord(platname);
-+                Disposer.addObjectRecord(bufferRef, ref);
-+                bufferRef = null;
-+            }
-+            if (t instanceof FontFormatException) {
-+                throw (FontFormatException)t;
-+            } else {
-+                throw new FontFormatException("Unexpected runtime exception.");
-+            }
-+        }
-     }
- 
-     private synchronized ByteBuffer getBuffer() throws FontFormatException {
--- a/patches/security/icedtea-6636360.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
---- vtableStubs_sparc.cpp	2009-03-16 16:52:18.000000000 -0400
-+++ openjdk/hotspot/src/cpu/sparc/vm/vtableStubs_sparc.cpp	2009-03-16 16:53:52.000000000 -0400
-@@ -190,12 +190,16 @@
-   // Compute itableMethodEntry and get methodOop(G5_method) and entrypoint(L0) for compiler
-   const int method_offset = (itableMethodEntry::size() * wordSize * vtable_index) + itableMethodEntry::method_offset_in_bytes();
-   __ add(G3_klassOop, L0, L1);
--  __ ld_ptr(L1, method_offset, G5_method);
-+  if (__ is_simm13(method_offset)) {
-+    __ ld_ptr(L1, method_offset, G5_method);
-+  } else {
-+    __ set(method_offset, G5_method);
-+    __ ld_ptr(L1, G5_method, G5_method);
-+  }
- 
- #ifndef PRODUCT
-   if (DebugVtables) {
-     Label L01;
--    __ ld_ptr(L1, method_offset, G5_method);
-     __ bpr(Assembler::rc_nz, false, Assembler::pt, G5_method, L01);
-     __ delayed()->nop();
-     __ stop("methodOop is null");
-@@ -243,10 +247,8 @@
-                         (UseCompressedOops ? 2*BytesPerInstWord : 0);
-       return basic + slop;
-     } else {
--      // save, ld, ld, sll, and, add, add, ld, cmp, br, add, ld, add, ld, ld, jmp, restore, sethi, jmpl, restore
--      const int basic = (20 LP64_ONLY(+ 6)) * BytesPerInstWord +
--                        // shift;add for load_klass
--                        (UseCompressedOops ? 2*BytesPerInstWord : 0);
-+      // save, ld, ld, sll, and, add, add, ld, cmp, br, add, ld, add, sethi, add, ld, ld, jmp, restore, sethi, jmpl, restore
-+      const int basic = (22 LP64_ONLY(+ 12)) * BytesPerInstWord; // worst case extra 6 bytes for each sethi in 64-bit mode
-       return (basic + slop);
-     }
-   }
--- a/patches/security/icedtea-6652463.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
---- old/src/share/classes/javax/print/attribute/standard/MediaSize.java	Tue Mar  3 10:16:15 2009
-+++ openjdk/jdk/src/share/classes/javax/print/attribute/standard/MediaSize.java	Tue Mar  3 10:16:14 2009
-@@ -123,8 +123,10 @@
-         if (x > y) {
-             throw new IllegalArgumentException("X dimension > Y dimension");
-         }
--        mediaName = media;
--        mediaMap.put(mediaName, this);
-+        if (media != null && mediaMap.get(media) == null) {
-+            mediaName = media;
-+            mediaMap.put(mediaName, this);
-+        }
-         sizeVector.add(this);
-     }
- 
-@@ -147,8 +149,10 @@
-         if (x > y) {
-             throw new IllegalArgumentException("X dimension > Y dimension");
-         }
--        mediaName = media;
--        mediaMap.put(mediaName, this);
-+        if (media != null && mediaMap.get(media) == null) {
-+            mediaName = media;
-+            mediaMap.put(mediaName, this);
-+        }
-         sizeVector.add(this);
-     }
- 
--- a/patches/security/icedtea-6656633.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
---- old/src/share/classes/javax/management/monitor/CounterMonitor.java	Mon Mar  9 13:19:14 2009
-+++ openjdk/jdk/src/share/classes/javax/management/monitor/CounterMonitor.java	Mon Mar  9 13:19:14 2009
-@@ -599,7 +599,7 @@
-      */
-     @Override
-     public MBeanNotificationInfo[] getNotificationInfo() {
--        return notifsInfo;
-+        return notifsInfo.clone();
-     }
- 
-     /*
---- old/src/share/classes/javax/management/monitor/GaugeMonitor.java	Mon Mar  9 13:19:16 2009
-+++ openjdk/jdk//src/share/classes/javax/management/monitor/GaugeMonitor.java	Mon Mar  9 13:19:16 2009
-@@ -481,7 +481,7 @@
-      */
-     @Override
-     public MBeanNotificationInfo[] getNotificationInfo() {
--        return notifsInfo;
-+        return notifsInfo.clone();
-     }
- 
-     /*
---- old/src/share/classes/javax/management/monitor/StringMonitor.java	Mon Mar  9 13:19:18 2009
-+++ openjdk/jdk//src/share/classes/javax/management/monitor/StringMonitor.java	Mon Mar  9 13:19:18 2009
-@@ -184,6 +184,7 @@
-      * @return The derived gauge of the specified object.
-      *
-      */
-+    @Override
-     public synchronized String getDerivedGauge(ObjectName object) {
-         return (String) super.getDerivedGauge(object);
-     }
-@@ -199,6 +200,7 @@
-      * @return The derived gauge timestamp of the specified object.
-      *
-      */
-+    @Override
-     public synchronized long getDerivedGaugeTimeStamp(ObjectName object) {
-         return super.getDerivedGaugeTimeStamp(object);
-     }
-@@ -341,8 +343,9 @@
-      * the Java class of the notification and the notification types sent by
-      * the string monitor.
-      */
-+    @Override
-     public MBeanNotificationInfo[] getNotificationInfo() {
--        return notifsInfo;
-+        return notifsInfo.clone();
-     }
- 
-     /*
--- a/patches/security/icedtea-6658158.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,815 +0,0 @@
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java	Mon Mar  9 22:21:43 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java	Mon Mar  9 22:21:42 2009
-@@ -54,13 +54,20 @@
-  *
-  */
- public class HttpSOAPConnection extends SOAPConnection {
-+    
-+    public static final String vmVendor = System.getProperty("java.vendor.url");
-+    private static final String sunVmVendor = "http://java.sun.com/";
-+    private static final String ibmVmVendor = "http://www.ibm.com/";
-+    private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false;
-+    private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false;
-+    private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint";
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings");
- 
--    public static String defaultProxyHost = null;
--    public static int defaultProxyPort = -1;
-+    public static final String defaultProxyHost = null;
-+    public static  final int defaultProxyPort = -1;
- 
-     MessageFactory messageFactory = null;
- 
-@@ -72,6 +79,9 @@
- 
-         try {
-             messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL);
-+        } catch (NoSuchMethodError ex) {
-+	            //fallback to default SOAP 1.1 in this case for backward compatibility
-+	            messageFactory = MessageFactory.newInstance();
-         } catch (Exception ex) {
-             log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex);
-             throw new SOAPExceptionImpl("Unable to create message factory", ex);
-@@ -95,14 +105,19 @@
-             throw new SOAPExceptionImpl("Connection is closed");
-         }
- 
--        Class urlEndpointClass = null;
-+        Class urlEndpointClass = null;       
-+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
- 
-         try {
--            urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint");
--        } catch (Exception ex) {
--            //Do nothing. URLEndpoint is available only when JAXM is there.
--            log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM");
--        }
-+                if (loader != null) {
-+	                urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT);
-+	        } else {
-+ 	                urlEndpointClass = Class.forName(JAXM_URLENDPOINT);
-+	            }
-+	        } catch (ClassNotFoundException ex) {
-+	            //Do nothing. URLEndpoint is available only when JAXM is there.
-+	            log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM");
-+ 	        }
- 
-         if (urlEndpointClass != null) {
-             if (urlEndpointClass.isInstance(endPoint)) {
-@@ -639,10 +654,23 @@
- 
-         return ret;
-     }
--
--    private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
--    private static String SSL_PROVIDER =
--        "com.sun.net.ssl.internal.ssl.Provider";
-+    //private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
-+    //private static String SSL_PROVIDER =
-+	      //  "com.sun.net.ssl.internal.ssl.Provider";
-+    private static final String SSL_PKG;
-+    private static  final String SSL_PROVIDER;
-+    
-+    
-+    static {    
-+ 	        if (isIBMVM) {
-+ 	            SSL_PKG ="com.ibm.net.ssl.internal.www.protocol";
-+ 	            SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider";
-+ 	        } else {
-+ 	            //if not IBM VM default to Sun.
-+ 	            SSL_PKG = "com.sun.net.ssl.internal.www.protocol";
-+ 	            SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider";
-+ 	        }
-+ 	    }
-     private void initHttps() {
-         //if(!setHttps) {
-         String pkgs = System.getProperty("java.protocol.handler.pkgs");
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java	Mon Mar  9 22:21:45 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java	Mon Mar  9 22:21:45 2009
-@@ -70,7 +70,7 @@
-  */
- public class AttachmentPartImpl extends AttachmentPart {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java	Mon Mar  9 22:21:48 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java	Mon Mar  9 22:21:47 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: EnvelopeFactory.java,v 1.24 2006/01/27 12:49:26 vj135062 Exp $
-- * $Revision: 1.24 $
-- * $Date: 2006/01/27 12:49:26 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -55,7 +55,7 @@
-  */
- public class EnvelopeFactory {
-     
--    protected static Logger
-+    protected static final Logger
-         log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-         "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java	Mon Mar  9 22:21:50 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java	Mon Mar  9 22:21:50 2009
-@@ -49,7 +49,7 @@
- public class ImageDataContentHandler extends Component
-     implements DataContentHandler {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java	Mon Mar  9 22:21:53 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java	Mon Mar  9 22:21:52 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: MessageFactoryImpl.java,v 1.23 2006/01/27 12:49:27 vj135062 Exp $
-- * $Revision: 1.23 $
-- * $Date: 2006/01/27 12:49:27 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -54,15 +54,15 @@
-  */
- public class MessageFactoryImpl extends MessageFactory {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
- 
--    protected static OutputStream listener;
-+    protected  OutputStream listener;
- 
-     protected boolean lazyAttachments = false;
-     
--    public static OutputStream listen(OutputStream newListener) {
-+    public  OutputStream listen(OutputStream newListener) {
-         OutputStream oldListener = listener;
-         listener = newListener;
-         return oldListener;
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java	Mon Mar  9 22:21:55 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java	Mon Mar  9 22:21:54 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: MessageImpl.java,v 1.5 2006/12/12 10:16:33 kumarjayanti Exp $
-- * $Revision: 1.5 $
-- * $Date: 2006/12/12 10:16:33 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -69,7 +69,7 @@
-     public static final String CONTENT_ID             = "Content-ID";
-     public static final String CONTENT_LOCATION       = "Content-Location";
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java	Mon Mar  9 22:21:58 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java	Mon Mar  9 22:21:57 2009
-@@ -37,7 +37,7 @@
- 
- public class SAAJMetaFactoryImpl extends SAAJMetaFactory {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java	Mon Mar  9 22:22:00 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java	Mon Mar  9 22:21:59 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: SOAPDocumentImpl.java,v 1.15 2006/01/27 12:49:29 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -45,7 +45,7 @@
- 
- public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument {
- 
--    protected static Logger log =
-+    protected static final  Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java	Mon Mar  9 22:22:02 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java	Mon Mar  9 22:22:02 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: SOAPFactoryImpl.java,v 1.21 2006/01/27 12:49:29 vj135062 Exp $
-- * $Revision: 1.21 $
-- * $Date: 2006/01/27 12:49:29 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -50,7 +50,7 @@
- 
- public abstract class SOAPFactoryImpl extends SOAPFactory {
- 
--    protected static Logger
-+    protected static final Logger
-         log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                                "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java	Mon Mar  9 22:22:05 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java	Mon Mar  9 22:22:04 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: SOAPPartImpl.java,v 1.1.1.1 2006/01/27 13:10:55 kumarjayanti Exp $
-- * $Revision: 1.1.1.1 $
-- * $Date: 2006/01/27 13:10:55 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -59,7 +59,7 @@
-  * @author Anil Vijendran (anil@sun.com)
-  */
- public abstract class SOAPPartImpl extends SOAPPart implements SOAPDocument {
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java	Mon Mar  9 22:22:07 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java	Mon Mar  9 22:22:07 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: CDATAImpl.java,v 1.19 2006/01/27 12:49:34 vj135062 Exp $
-- * $Revision: 1.19 $
-- * $Date: 2006/01/27 12:49:34 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -43,7 +43,7 @@
-     extends com.sun.org.apache.xerces.internal.dom.CDATASectionImpl
-     implements javax.xml.soap.Text {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CommentImpl.java	Mon Mar  9 22:22:10 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CommentImpl.java	Mon Mar  9 22:22:09 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: CommentImpl.java,v 1.17 2006/01/27 12:49:34 vj135062 Exp $
-- * $Revision: 1.17 $
-- * $Date: 2006/01/27 12:49:34 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -47,7 +47,7 @@
-     extends com.sun.org.apache.xerces.internal.dom.CommentImpl
-     implements javax.xml.soap.Text, org.w3c.dom.Comment { 
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-     protected static ResourceBundle rb =
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementImpl.java	Mon Mar  9 22:22:12 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/ElementImpl.java	Mon Mar  9 22:22:11 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: ElementImpl.java,v 1.6 2006/11/16 16:01:14 kumarjayanti Exp $
-- * $Revision: 1.6 $
-- * $Date: 2006/11/16 16:01:14 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -60,7 +60,7 @@
- 
-     protected QName elementQName;
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TextImpl.java	Mon Mar  9 22:22:15 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TextImpl.java	Mon Mar  9 22:22:14 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: TextImpl.java,v 1.19 2006/01/27 12:49:36 vj135062 Exp $
-- * $Revision: 1.19 $
-- * $Date: 2006/01/27 12:49:36 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -43,7 +43,7 @@
-     extends com.sun.org.apache.xerces.internal.dom.TextImpl
-     implements javax.xml.soap.Text, org.w3c.dom.Text {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java	Mon Mar  9 22:22:17 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java	Mon Mar  9 22:22:16 2009
-@@ -23,9 +23,9 @@
-  * have any questions.
-  */
- /*
-- * $Id: NameImpl.java,v 1.48 2006/01/27 12:49:38 vj135062 Exp $
-- * $Revision: 1.48 $
-- * $Date: 2006/01/27 12:49:38 $
-+ * 
-+ * 
-+ * 
-  */
- 
- 
-@@ -63,7 +63,7 @@
-     protected String prefix = "";
-     private String qualifiedName = null;
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.NAMING_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.name.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java	Mon Mar  9 22:22:19 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java	Mon Mar  9 22:22:19 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Fault1_1Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
-+ * 
-  */
- 
- 
-@@ -57,7 +57,7 @@
- 
- public class Fault1_1Impl extends FaultImpl {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(
-             LogDomainConstants.SOAP_VER1_1_DOMAIN,
-             "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java	Mon Mar  9 22:22:22 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java	Mon Mar  9 22:22:21 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Header1_1Impl.java,v 1.29 2006/01/27 12:49:41 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -50,7 +50,7 @@
- 
- public class Header1_1Impl extends HeaderImpl {
-     
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-         
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java	Mon Mar  9 22:22:24 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java	Mon Mar  9 22:22:24 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: HeaderElement1_1Impl.java,v 1.29 2006/01/27 12:49:41 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -49,7 +49,7 @@
- 
- public class HeaderElement1_1Impl extends HeaderElementImpl {
-     
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java	Mon Mar  9 22:22:27 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java	Mon Mar  9 22:22:26 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Message1_1Impl.java,v 1.24 2006/01/27 12:49:41 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -48,7 +48,7 @@
- 
- public class Message1_1Impl extends MessageImpl implements SOAPConstants {
-     
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
-    
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java	Mon Mar  9 22:22:29 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java	Mon Mar  9 22:22:28 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: SOAPPart1_1Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
-+ * 
-  */
- 
- 
-@@ -48,7 +48,7 @@
- 
- public class SOAPPart1_1Impl extends SOAPPartImpl implements SOAPConstants {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN,
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java	Mon Mar  9 22:22:32 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java	Mon Mar  9 22:22:31 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Body1_2Impl.java,v 1.32 2006/01/27 12:49:44 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -50,7 +50,7 @@
- 
- public class Body1_2Impl extends BodyImpl {
-     
--    protected static Logger log =
-+    protected static  final Logger log =
-         Logger.getLogger(Body1_2Impl.class.getName(),
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java	Mon Mar  9 22:22:34 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java	Mon Mar  9 22:22:34 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Detail1_2Impl.java,v 1.24 2006/01/27 12:49:45 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -47,7 +47,7 @@
- 
- public class Detail1_2Impl extends DetailImpl {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(Detail1_2Impl.class.getName(),
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java	Mon Mar  9 22:22:37 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java	Mon Mar  9 22:22:36 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Envelope1_2Impl.java,v 1.26 2006/01/27 12:49:47 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -47,7 +47,7 @@
- 
- public class Envelope1_2Impl extends EnvelopeImpl {
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(Envelope1_2Impl.class.getName(),
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java	Mon Mar  9 22:22:39 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java	Mon Mar  9 22:22:38 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Fault1_2Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
-+ * 
-  */
- 
- 
-@@ -51,7 +51,7 @@
- 
- public class Fault1_2Impl extends FaultImpl {
-         
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(
-             LogDomainConstants.SOAP_VER1_2_DOMAIN,
-             "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java	Mon Mar  9 22:22:41 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java	Mon Mar  9 22:22:41 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: Header1_2Impl.java,v 1.36 2006/01/27 12:49:48 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -53,7 +53,7 @@
- 
- public class Header1_2Impl extends HeaderImpl {
-     
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(
-             LogDomainConstants.SOAP_VER1_2_DOMAIN,
-             "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java	Mon Mar  9 22:22:44 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java	Mon Mar  9 22:22:43 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: HeaderElement1_2Impl.java,v 1.29 2006/01/27 12:49:48 vj135062 Exp $
-+ * 
-  */
- 
- 
-@@ -47,7 +47,7 @@
- 
- public class HeaderElement1_2Impl extends HeaderElementImpl {
- 
--    private static Logger log =
-+    private static final Logger log =
-         Logger.getLogger(HeaderElement1_2Impl.class.getName(),
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
-        
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java	Mon Mar  9 22:22:46 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java	Mon Mar  9 22:22:46 2009
-@@ -23,7 +23,7 @@
-  * have any questions.
-  */
- /*
-- * $Id: SOAPPart1_2Impl.java,v 1.1.1.1 2006/01/27 13:10:57 kumarjayanti Exp $
-+ * 
-  */
- 
- 
-@@ -47,7 +47,7 @@
- 
- public class SOAPPart1_2Impl extends SOAPPartImpl implements SOAPConstants{
- 
--    protected static Logger log =
-+    protected static final Logger log =
-         Logger.getLogger(SOAPPart1_2Impl.class.getName(),
-                          "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
- 
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java	Mon Mar  9 22:22:49 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java	Mon Mar  9 22:22:48 2009
-@@ -45,12 +45,12 @@
-  * because they are not legal in SOAP.  If the user of this class sets a
-  * LexicalHandler, then it forwards events to that handler.
-  *
-- * $Id: RejectDoctypeSaxFilter.java,v 1.13 2006/01/27 12:49:52 vj135062 Exp $
-+ * 
-  * @author Edwin Goei
-  */
- 
- public class RejectDoctypeSaxFilter extends XMLFilterImpl implements XMLReader, LexicalHandler{
--    protected static Logger log =
-+    protected static final Logger log =
-     Logger.getLogger(LogDomainConstants.UTIL_DOMAIN,
-     "com.sun.xml.internal.messaging.saaj.util.LocalStrings");
-     
---- old/src/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java	Mon Mar  9 22:22:51 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java	Mon Mar  9 22:22:50 2009
-@@ -62,20 +62,22 @@
- public class EfficientStreamingTransformer
-     extends javax.xml.transform.Transformer {
- 
--  static final String version;
--  static final String vendor;
-+  //static final String version;
-+  //static final String vendor;
- 
--  protected static TransformerFactory transformerFactory = TransformerFactory.newInstance();
-+  protected static final TransformerFactory transformerFactory = TransformerFactory.newInstance();
- 
--  static {
--        version = System.getProperty("java.vm.version");
--        vendor = System.getProperty("java.vm.vendor");
--        if (vendor.startsWith("Sun") && 
--            (version.startsWith("1.4") || version.startsWith("1.3"))) {
--            transformerFactory = 
--                new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl();
--        }
--  }
-+   //removing support for Java 1.4 and 1.3 : CR6658158
-+    /*static {
-+    version = System.getProperty("java.vm.version");
-+    vendor = System.getProperty("java.vm.vendor");
-+    if (vendor.startsWith("Sun") && 
-+    (version.startsWith("1.4") || version.startsWith("1.3"))) {
-+    transformerFactory = 
-+    new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl();
-+    }
-+}
-+*/
-                                                                                                                                                   
-     /**
-      * TransformerFactory instance.
---- old/src/share/classes/com/sun/xml/internal/txw2/DatatypeWriter.java	Mon Mar  9 22:22:53 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/txw2/DatatypeWriter.java	Mon Mar  9 22:22:53 2009
-@@ -25,6 +25,9 @@
- 
- package com.sun.xml.internal.txw2;
- 
-+import java.util.AbstractList;
-+import java.util.Collections;
-+import java.util.List;
- import javax.xml.namespace.QName;
- 
- /**
-@@ -53,50 +56,60 @@
-      */
-     void print(DT dt, NamespaceResolver resolver, StringBuilder buf);
- 
--
--    static final DatatypeWriter<?>[] BUILDIN = new DatatypeWriter<?>[] {
--        new DatatypeWriter<String>() {
--            public Class<String> getType() {
--                return String.class;
-+    static final List<DatatypeWriter<?>> BUILTIN = Collections.unmodifiableList(new AbstractList() {
-+        
-+        private DatatypeWriter<?>[] BUILTIN_ARRAY = new DatatypeWriter<?>[] {
-+            new DatatypeWriter<String>() {
-+                public Class<String> getType() {
-+                    return String.class;
-+                }
-+                public void print(String s, NamespaceResolver resolver, StringBuilder buf) {
-+                    buf.append(s);
-+                }
-+            },
-+            new DatatypeWriter<Integer>() {
-+                public Class<Integer> getType() {
-+                    return Integer.class;
-+                }
-+                public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) {
-+                    buf.append(i);
-+                }
-+            },
-+            new DatatypeWriter<Float>() {
-+                public Class<Float> getType() {
-+                    return Float.class;
-+                }
-+                public void print(Float f, NamespaceResolver resolver, StringBuilder buf) {
-+                    buf.append(f);
-+                }
-+            },
-+            new DatatypeWriter<Double>() {
-+                public Class<Double> getType() {
-+                    return Double.class;
-+                }
-+                public void print(Double d, NamespaceResolver resolver, StringBuilder buf) {
-+                    buf.append(d);
-+                }
-+            },
-+            new DatatypeWriter<QName>() {
-+                public Class<QName> getType() {
-+                    return QName.class;
-+                }
-+                public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) {
-+                    String p = resolver.getPrefix(qn.getNamespaceURI());
-+                    if(p.length()!=0)
-+                        buf.append(p).append(':');
-+                    buf.append(qn.getLocalPart());
-+                }
-             }
--            public void print(String s, NamespaceResolver resolver, StringBuilder buf) {
--                buf.append(s);
--            }
--        },
--        new DatatypeWriter<Integer>() {
--            public Class<Integer> getType() {
--                return Integer.class;
--            }
--            public void print(Integer i, NamespaceResolver resolver, StringBuilder buf) {
--                buf.append(i);
--            }
--        },
--        new DatatypeWriter<Float>() {
--            public Class<Float> getType() {
--                return Float.class;
--            }
--            public void print(Float f, NamespaceResolver resolver, StringBuilder buf) {
--                buf.append(f);
--            }
--        },
--        new DatatypeWriter<Double>() {
--            public Class<Double> getType() {
--                return Double.class;
--            }
--            public void print(Double d, NamespaceResolver resolver, StringBuilder buf) {
--                buf.append(d);
--            }
--        },
--        new DatatypeWriter<QName>() {
--            public Class<QName> getType() {
--                return QName.class;
--            }
--            public void print(QName qn, NamespaceResolver resolver, StringBuilder buf) {
--                String p = resolver.getPrefix(qn.getNamespaceURI());
--                if(p.length()!=0)
--                    buf.append(p).append(':');
--                buf.append(qn.getLocalPart());
--            }
-+        };
-+                
-+        public DatatypeWriter<?> get(int n) { 
-+          return BUILTIN_ARRAY[n];
-         }
--    };
-+
-+        public int size() {
-+          return BUILTIN_ARRAY.length;
-+        }
-+      });
- }
---- old/src/share/classes/com/sun/xml/internal/txw2/Document.java	Mon Mar  9 22:22:56 2009
-+++ openjdk/jaxws/src/share/classes/com/sun/xml/internal/txw2/Document.java	Mon Mar  9 22:22:55 2009
-@@ -76,7 +76,7 @@
- 
-     Document(XmlSerializer out) {
-         this.out = out;
--        for( DatatypeWriter dw : DatatypeWriter.BUILDIN )
-+        for( DatatypeWriter dw : DatatypeWriter.BUILTIN )
-             datatypeWriters.put(dw.getType(),dw);
-     }
- 
--- a/patches/security/icedtea-6691246.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
---- old/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Mon Mar  9 16:07:47 2009
-+++ openjdk/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Mon Mar  9 16:07:46 2009
-@@ -22,7 +22,6 @@
-  * CA 95054 USA or visit www.sun.com if you need additional information or
-  * have any questions.
-  */
--
- package com.sun.jmx.remote.internal;
- 
- import java.io.IOException;
-@@ -34,6 +33,7 @@
- import java.util.Map;
- import java.util.concurrent.Executor;
- 
-+import java.security.AccessControlContext;
- import java.security.AccessController;
- import java.security.PrivilegedAction;
- import javax.security.auth.Subject;
-@@ -54,6 +54,9 @@
- 
- 
- public abstract class ClientNotifForwarder {
-+
-+    private final AccessControlContext acc;
-+
-     public ClientNotifForwarder(Map env) {
-         this(null, env);
-     }
-@@ -87,6 +90,8 @@
-             this.command = command;
-             if (thread == null) {
-                 thread = new Thread() {
-+
-+                    @Override
-                     public void run() {
-                         while (true) {
-                             Runnable r;
-@@ -130,6 +135,7 @@
- 
-         this.defaultClassLoader = defaultClassLoader;
-         this.executor = ex;
-+        this.acc = AccessController.getContext();
-     }
- 
-     /**
-@@ -390,28 +396,85 @@
-         setState(TERMINATED);
-     }
- 
--// -------------------------------------------------
--// private classes
--// -------------------------------------------------
-+
-+    // -------------------------------------------------
-+    // private classes
-+    // -------------------------------------------------
-     //
-+
-     private class NotifFetcher implements Runnable {
-+
-+        private volatile boolean alreadyLogged = false;
-+
-+        private void logOnce(String msg, SecurityException x) {
-+            if (alreadyLogged) return;
-+            // Log only once.
-+            logger.config("setContextClassLoader",msg);
-+            if (x != null) logger.fine("setContextClassLoader", x);
-+            alreadyLogged = true;
-+        }
-+
-+        // Set new context class loader, returns previous one.
-+        private final ClassLoader setContextClassLoader(final ClassLoader loader) {
-+            final AccessControlContext ctxt = ClientNotifForwarder.this.acc;
-+            // if ctxt is null, log a config message and throw a
-+            // SecurityException.
-+            if (ctxt == null) {
-+                logOnce("AccessControlContext must not be null.",null);
-+                throw new SecurityException("AccessControlContext must not be null");
-+            }
-+            return AccessController.doPrivileged(
-+                new PrivilegedAction<ClassLoader>() {
-+                    public ClassLoader run() {
-+                        try {
-+                            // get context class loader - may throw
-+                            // SecurityException - though unlikely.
-+                            final ClassLoader previous =
-+                                Thread.currentThread().getContextClassLoader();
-+
-+                            // if nothing needs to be done, break here...
-+                            if (loader == previous) return previous;
-+
-+                            // reset context class loader - may throw
-+                            // SecurityException
-+                            Thread.currentThread().setContextClassLoader(loader);
-+                            return previous;
-+                        } catch (SecurityException x) {
-+                            logOnce("Permission to set ContextClassLoader missing. " +
-+                                    "Notifications will not be dispatched. " +
-+                                    "Please check your Java policy configuration: " +
-+                                    x, x);
-+                            throw x;
-+                        }
-+                    }
-+                }, ctxt);
-+        }
-+
-         public void run() {
-+            final ClassLoader previous;
-+            if (defaultClassLoader != null) {
-+                previous = setContextClassLoader(defaultClassLoader);
-+            } else {
-+                previous = null;
-+            }
-+            try {
-+                doRun();
-+            } finally {
-+                if (defaultClassLoader != null) {
-+                    setContextClassLoader(previous);
-+                }
-+            }
-+        }
-+
-+        private void doRun() {
-             synchronized (ClientNotifForwarder.this) {
-                 currentFetchThread = Thread.currentThread();
- 
--                if (state == STARTING)
-+                if (state == STARTING) {
-                     setState(STARTED);
-+                }
-             }
- 
--            if (defaultClassLoader != null) {
--                AccessController.doPrivileged(new PrivilegedAction<Void>() {
--                        public Void run() {
--                            Thread.currentThread().
--                                setContextClassLoader(defaultClassLoader);
--                            return null;
--                        }
--                    });
--            }
- 
-             NotificationResult nr = null;
-             if (!shouldStop() && (nr = fetchNotifs()) != null) {
-@@ -445,8 +508,9 @@
-                         // check if an mbean unregistration notif
-                         if (!listenerID.equals(mbeanRemovedNotifID)) {
-                             final ClientListenerInfo li = infoList.get(listenerID);
--                            if (li != null)
--                                listeners.put(listenerID,li);
-+                            if (li != null) {
-+                                listeners.put(listenerID, li);
-+                            }
-                             continue;
-                         }
-                         final Notification notif = tn.getNotification();
-@@ -787,9 +851,7 @@
-     private long clientSequenceNumber = -1;
-     private final int maxNotifications;
-     private final long timeout;
--
-     private Integer mbeanRemovedNotifID = null;
--
-     private Thread currentFetchThread;
- 
-     // admin stuff
--- a/patches/security/icedtea-6717680.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
---- old/src/share/classes/com/sun/jndi/ldap/LdapCtx.java	Tue Mar  3 14:42:48 2009
-+++ openjdk/jdk/src/share/classes/com/sun/jndi/ldap/LdapCtx.java	Tue Mar  3 14:42:47 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1999-2005 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -302,7 +302,16 @@
- 
-         schemaTrees = new Hashtable(11, 0.75f);
-         initEnv();
--        connect(false);
-+        try {
-+            connect(false);
-+        } catch (NamingException e) {
-+            try {
-+                close();
-+            } catch (Exception e2) {
-+                // Nothing
-+            }
-+            throw e;
-+        }
-     }
- 
-     LdapCtx(LdapCtx existing, String newDN) throws NamingException {
--- a/patches/security/icedtea-6721651.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,735 +0,0 @@
---- old/src/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java	Mon Mar  9 18:11:01 2009
-+++ openjdk/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerAccessController.java	Mon Mar  9 18:11:00 2009
-@@ -111,6 +111,22 @@
-      */
-     protected abstract void checkWrite();
- 
-+    /**
-+     * Check if the caller can create the named class.  The default
-+     * implementation of this method calls {@link #checkWrite()}.
-+     */
-+    protected void checkCreate(String className) {
-+        checkWrite();
-+    }
-+
-+    /**
-+     * Check if the caller can unregister the named MBean.  The default
-+     * implementation of this method calls {@link #checkWrite()}.
-+     */
-+    protected void checkUnregister(ObjectName name) {
-+        checkWrite();
-+    }
-+
-     //--------------------------------------------
-     //--------------------------------------------
-     //
-@@ -148,7 +164,7 @@
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public ObjectInstance createMBean(String className, ObjectName name)
-@@ -158,7 +174,7 @@
-         MBeanRegistrationException,
-         MBeanException,
-         NotCompliantMBeanException {
--        checkWrite();
-+        checkCreate(className);
-         SecurityManager sm = System.getSecurityManager();
-         if (sm == null) {
-             Object object = getMBeanServer().instantiate(className);
-@@ -170,7 +186,7 @@
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public ObjectInstance createMBean(String className, ObjectName name,
-@@ -181,7 +197,7 @@
-         MBeanRegistrationException,
-         MBeanException,
-         NotCompliantMBeanException {
--        checkWrite();
-+        checkCreate(className);
-         SecurityManager sm = System.getSecurityManager();
-         if (sm == null) {
-             Object object = getMBeanServer().instantiate(className,
-@@ -196,7 +212,7 @@
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public ObjectInstance createMBean(String className,
-@@ -209,7 +225,7 @@
-         MBeanException,
-         NotCompliantMBeanException,
-         InstanceNotFoundException {
--        checkWrite();
-+        checkCreate(className);
-         SecurityManager sm = System.getSecurityManager();
-         if (sm == null) {
-             Object object = getMBeanServer().instantiate(className,
-@@ -222,7 +238,7 @@
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public ObjectInstance createMBean(String className,
-@@ -237,7 +253,7 @@
-         MBeanException,
-         NotCompliantMBeanException,
-         InstanceNotFoundException {
--        checkWrite();
-+        checkCreate(className);
-         SecurityManager sm = System.getSecurityManager();
-         if (sm == null) {
-             Object object = getMBeanServer().instantiate(className,
-@@ -394,17 +410,17 @@
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public Object instantiate(String className)
-         throws ReflectionException, MBeanException {
--        checkWrite();
-+        checkCreate(className);
-         return getMBeanServer().instantiate(className);
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public Object instantiate(String className,
-@@ -411,28 +427,28 @@
-                               Object params[],
-                               String signature[])
-         throws ReflectionException, MBeanException {
--        checkWrite();
-+        checkCreate(className);
-         return getMBeanServer().instantiate(className, params, signature);
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public Object instantiate(String className, ObjectName loaderName)
-         throws ReflectionException, MBeanException, InstanceNotFoundException {
--        checkWrite();
-+        checkCreate(className);
-         return getMBeanServer().instantiate(className, loaderName);
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkCreate(className)</code>, then forward this method to the
-      * wrapped object.
-      */
-     public Object instantiate(String className, ObjectName loaderName,
-                               Object params[], String signature[])
-         throws ReflectionException, MBeanException, InstanceNotFoundException {
--        checkWrite();
-+        checkCreate(className);
-         return getMBeanServer().instantiate(className, loaderName,
-                                             params, signature);
-     }
-@@ -579,12 +595,12 @@
-     }
- 
-     /**
--     * Call <code>checkWrite()</code>, then forward this method to the
-+     * Call <code>checkUnregister()</code>, then forward this method to the
-      * wrapped object.
-      */
-     public void unregisterMBean(ObjectName name)
-         throws InstanceNotFoundException, MBeanRegistrationException {
--        checkWrite();
-+        checkUnregister(name);
-         getMBeanServer().unregisterMBean(name);
-     }
- 
---- old/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Mon Mar  9 18:11:03 2009
-+++ openjdk/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Mon Mar  9 18:11:03 2009
-@@ -31,11 +31,17 @@
- import java.security.AccessController;
- import java.security.Principal;
- import java.security.PrivilegedAction;
--import java.util.Collection;
-+import java.util.ArrayList;
-+import java.util.HashMap;
- import java.util.Iterator;
-+import java.util.List;
-+import java.util.Map;
- import java.util.Properties;
- import java.util.Set;
-+import java.util.StringTokenizer;
-+import java.util.regex.Pattern;
- import javax.management.MBeanServer;
-+import javax.management.ObjectName;
- import javax.security.auth.Subject;
- 
- /**
-@@ -46,7 +52,8 @@
-  * not allowed; in this case the request is not forwarded to the
-  * wrapped object.</p>
-  *
-- * <p>This class implements the {@link #checkRead()} and {@link #checkWrite()}
-+ * <p>This class implements the {@link #checkRead()}, {@link #checkWrite()},
-+ * {@link #checkCreate(String)}, and {@link #checkUnregister(ObjectName)}
-  * methods based on an access level properties file containing username/access
-  * level pairs. The set of username/access level pairs is passed either as a
-  * filename which denotes a properties file on disk, or directly as an instance
-@@ -56,15 +63,51 @@
-  * has exactly one access level. The same access level can be shared by several
-  * usernames.</p>
-  *
-- * <p>The supported access level values are <i>readonly</i> and
-- * <i>readwrite</i>.</p>
-+ * <p>The supported access level values are {@code readonly} and
-+ * {@code readwrite}.  The {@code readwrite} access level can be
-+ * qualified by one or more <i>clauses</i>, where each clause looks
-+ * like <code>create <i>classNamePattern</i></code> or {@code
-+ * unregister}.  For example:</p>
-+ * 
-+ * <pre>
-+ * monitorRole  readonly
-+ * controlRole  readwrite \
-+ *              create javax.management.timer.*,javax.management.monitor.* \
-+ *              unregister
-+ * </pre>
-+ * 
-+ * <p>(The continuation lines with {@code \} come from the parser for
-+ * Properties files.)</p>
-  */
- public class MBeanServerFileAccessController
-     extends MBeanServerAccessController {
- 
--    public static final String READONLY = "readonly";
--    public static final String READWRITE = "readwrite";
-+    static final String READONLY = "readonly";
-+    static final String READWRITE = "readwrite";
- 
-+    static final String CREATE = "create";
-+    static final String UNREGISTER = "unregister";
-+
-+    private enum AccessType {READ, WRITE, CREATE, UNREGISTER};
-+
-+    private static class Access {
-+        final boolean write;
-+        final String[] createPatterns;
-+        private boolean unregister;
-+
-+        Access(boolean write, boolean unregister, List<String> createPatternList) {
-+            this.write = write;
-+            int npats = (createPatternList == null) ? 0 : createPatternList.size();
-+            if (npats == 0)
-+                this.createPatterns = NO_STRINGS;
-+            else
-+                this.createPatterns = createPatternList.toArray(new String[npats]);
-+            this.unregister = unregister;
-+        }
-+
-+        private final String[] NO_STRINGS = new String[0];
-+    }
-+
-     /**
-      * <p>Create a new MBeanServerAccessController that forwards all the
-      * MBeanServer requests to the MBeanServer set by invoking the {@link
-@@ -87,8 +130,8 @@
-         throws IOException {
-         super();
-         this.accessFileName = accessFileName;
--        props = propertiesFromFile(accessFileName);
--        checkValues(props);
-+        Properties props = propertiesFromFile(accessFileName);
-+        parseProperties(props);
-     }
- 
-     /**
-@@ -123,14 +166,14 @@
-      * #setMBeanServer} method after doing access checks based on read and
-      * write permissions.</p>
-      *
--     * <p>This instance is initialized from the specified properties instance.
--     * This constructor makes a copy of the properties instance using its
--     * <code>clone</code> method and it is the copy that is consulted to check
--     * the username and access level of an incoming connection. The original
--     * properties object can be modified without affecting the copy. If the
--     * {@link #refresh} method is then called, the
--     * <code>MBeanServerFileAccessController</code> will make a new copy of the
--     * properties object at that time.</p>
-+     * <p>This instance is initialized from the specified properties
-+     * instance.  This constructor makes a copy of the properties
-+     * instance and it is the copy that is consulted to check the
-+     * username and access level of an incoming connection. The
-+     * original properties object can be modified without affecting
-+     * the copy. If the {@link #refresh} method is then called, the
-+     * <code>MBeanServerFileAccessController</code> will make a new
-+     * copy of the properties object at that time.</p>
-      *
-      * @param accessFileProps properties list containing the username/access
-      * level entries.
-@@ -145,8 +188,7 @@
-         if (accessFileProps == null)
-             throw new IllegalArgumentException("Null properties");
-         originalProps = accessFileProps;
--        props = (Properties) accessFileProps.clone();
--        checkValues(props);
-+        parseProperties(accessFileProps);
-     }
- 
-     /**
-@@ -155,14 +197,14 @@
-      * #setMBeanServer} method after doing access checks based on read and
-      * write permissions.</p>
-      *
--     * <p>This instance is initialized from the specified properties instance.
--     * This constructor makes a copy of the properties instance using its
--     * <code>clone</code> method and it is the copy that is consulted to check
--     * the username and access level of an incoming connection. The original
--     * properties object can be modified without affecting the copy. If the
--     * {@link #refresh} method is then called, the
--     * <code>MBeanServerFileAccessController</code> will make a new copy of the
--     * properties object at that time.</p>
-+     * <p>This instance is initialized from the specified properties
-+     * instance.  This constructor makes a copy of the properties
-+     * instance and it is the copy that is consulted to check the
-+     * username and access level of an incoming connection. The
-+     * original properties object can be modified without affecting
-+     * the copy. If the {@link #refresh} method is then called, the
-+     * <code>MBeanServerFileAccessController</code> will make a new
-+     * copy of the properties object at that time.</p>
-      *
-      * @param accessFileProps properties list containing the username/access
-      * level entries.
-@@ -184,8 +226,9 @@
-      * Check if the caller can do read operations. This method does
-      * nothing if so, otherwise throws SecurityException.
-      */
-+    @Override
-     public void checkRead() {
--        checkAccessLevel(READONLY);
-+        checkAccess(AccessType.READ, null);
-     }
- 
-     /**
-@@ -192,11 +235,30 @@
-      * Check if the caller can do write operations.  This method does
-      * nothing if so, otherwise throws SecurityException.
-      */
-+    @Override
-     public void checkWrite() {
--        checkAccessLevel(READWRITE);
-+        checkAccess(AccessType.WRITE, null);
-     }
- 
-     /**
-+     * Check if the caller can create MBeans or instances of the given class.
-+     * This method does nothing if so, otherwise throws SecurityException.
-+     */
-+    @Override
-+    public void checkCreate(String className) {
-+        checkAccess(AccessType.CREATE, className);
-+    }
-+
-+    /**
-+     * Check if the caller can do unregister operations.  This method does
-+     * nothing if so, otherwise throws SecurityException.
-+     */
-+    @Override
-+    public void checkUnregister(ObjectName name) {
-+        checkAccess(AccessType.UNREGISTER, null);
-+    }
-+
-+    /**
-      * <p>Refresh the set of username/access level entries.</p>
-      *
-      * <p>If this instance was created using the
-@@ -218,14 +280,13 @@
-      * @exception IllegalArgumentException if any of the supplied access
-      * level values differs from "readonly" or "readwrite".
-      */
--    public void refresh() throws IOException {
--        synchronized (props) {
--            if (accessFileName == null)
--                props = (Properties) originalProps.clone();
--            else
--                props = propertiesFromFile(accessFileName);
--            checkValues(props);
--        }
-+    public synchronized void refresh() throws IOException {
-+        Properties props;
-+        if (accessFileName == null)
-+            props = (Properties) originalProps;
-+        else
-+            props = propertiesFromFile(accessFileName);
-+        parseProperties(props);
-     }
- 
-     private static Properties propertiesFromFile(String fname)
-@@ -233,11 +294,13 @@
-         FileInputStream fin = new FileInputStream(fname);
-         Properties p = new Properties();
-         p.load(fin);
-+        // Properties.load does a buffered read so we don't need to wrap
-+        // the FileInputStream in a BufferedInputStream.
-         fin.close();
-         return p;
-     }
- 
--    private void checkAccessLevel(String accessLevel) {
-+    private synchronized void checkAccess(AccessType requiredAccess, String arg) {
-         final AccessControlContext acc = AccessController.getContext();
-         final Subject s =
-             AccessController.doPrivileged(new PrivilegedAction<Subject>() {
-@@ -247,39 +310,234 @@
-                 });
-         if (s == null) return; /* security has not been enabled */
-         final Set principals = s.getPrincipals();
-+        String newPropertyValue = null;
-         for (Iterator i = principals.iterator(); i.hasNext(); ) {
-             final Principal p = (Principal) i.next();
--            String grantedAccessLevel;
--            synchronized (props) {
--                grantedAccessLevel = props.getProperty(p.getName());
--            }
--            if (grantedAccessLevel != null) {
--                if (accessLevel.equals(READONLY) &&
--                    (grantedAccessLevel.equals(READONLY) ||
--                     grantedAccessLevel.equals(READWRITE)))
-+            Access access = accessMap.get(p.getName());
-+            if (access != null) {
-+                boolean ok;
-+                switch (requiredAccess) {
-+                    case READ:
-+                        ok = true;  // all access entries imply read
-+                        break;
-+                    case WRITE:
-+                        ok = access.write;
-+                        break;
-+                    case UNREGISTER:
-+                        ok = access.unregister;
-+                        if (!ok && access.write)
-+                            newPropertyValue = "unregister";
-+                        break;
-+                    case CREATE:
-+                        ok = checkCreateAccess(access, arg);
-+                        if (!ok && access.write)
-+                            newPropertyValue = "create " + arg;
-+                        break;
-+                    default:
-+                        throw new AssertionError();
-+                }
-+                if (ok)
-                     return;
--                if (accessLevel.equals(READWRITE) &&
--                    grantedAccessLevel.equals(READWRITE))
--                    return;
-             }
-         }
--        throw new SecurityException("Access denied! Invalid access level for " +
--                                    "requested MBeanServer operation.");
-+        SecurityException se = new SecurityException("Access denied! Invalid " +
-+                "access level for requested MBeanServer operation.");
-+        // Add some more information to help people with deployments that
-+        // worked before we required explicit create clauses. We're not giving
-+        // any information to the bad guys, other than that the access control
-+        // is based on a file, which they could have worked out from the stack
-+        // trace anyway.
-+        if (newPropertyValue != null) {
-+            SecurityException se2 = new SecurityException("Access property " +
-+                    "for this identity should be similar to: " + READWRITE +
-+                    " " + newPropertyValue);
-+            se.initCause(se2);
-+        }
-+        throw se;
-     }
- 
--    private void checkValues(Properties props) {
--        Collection c = props.values();
--        for (Iterator i = c.iterator(); i.hasNext(); ) {
--            final String accessLevel = (String) i.next();
--            if (!accessLevel.equals(READONLY) &&
--                !accessLevel.equals(READWRITE)) {
--                throw new IllegalArgumentException(
--                    "Syntax error in access level entry [" + accessLevel + "]");
-+    private static boolean checkCreateAccess(Access access, String className) {
-+        for (String classNamePattern : access.createPatterns) {
-+            if (classNameMatch(classNamePattern, className))
-+                return true;
-+        }
-+        return false;
-+    }
-+
-+    private static boolean classNameMatch(String pattern, String className) {
-+        // We studiously avoided regexes when parsing the properties file,
-+        // because that is done whenever the VM is started with the
-+        // appropriate -Dcom.sun.management options, even if nobody ever
-+        // creates an MBean.  We don't want to incur the overhead of loading
-+        // all the regex code whenever those options are specified, but if we
-+        // get as far as here then the VM is already running and somebody is
-+        // doing the very unusual operation of remotely creating an MBean.
-+        // Because that operation is so unusual, we don't try to optimize
-+        // by hand-matching or by caching compiled Pattern objects.
-+        StringBuilder sb = new StringBuilder();
-+        StringTokenizer stok = new StringTokenizer(pattern, "*", true);
-+        while (stok.hasMoreTokens()) {
-+            String tok = stok.nextToken();
-+            if (tok.equals("*"))
-+                sb.append("[^.]*");
-+            else
-+                sb.append(Pattern.quote(tok));
-+        }
-+        return className.matches(sb.toString());
-+    }
-+
-+    private void parseProperties(Properties props) {
-+        this.accessMap = new HashMap<String, Access>();
-+        for (Map.Entry<Object, Object> entry : props.entrySet()) {
-+            String identity = (String) entry.getKey();
-+            String accessString = (String) entry.getValue();
-+            Access access = Parser.parseAccess(identity, accessString);
-+            accessMap.put(identity, access);
-+        }
-+    }
-+
-+    private static class Parser {
-+        private final static int EOS = -1;  // pseudo-codepoint "end of string"
-+        static {
-+            assert !Character.isWhitespace(EOS);
-+        }
-+
-+        private final String identity;  // just for better error messages
-+        private final String s;  // the string we're parsing
-+        private final int len;   // s.length()
-+        private int i;
-+        private int c;
-+        // At any point, either c is s.codePointAt(i), or i == len and
-+        // c is EOS.  We use int rather than char because it is conceivable
-+        // (if unlikely) that a classname in a create clause might contain
-+        // "supplementary characters", the ones that don't fit in the original
-+        // 16 bits for Unicode.
-+
-+        private Parser(String identity, String s) {
-+            this.identity = identity;
-+            this.s = s;
-+            this.len = s.length();
-+            this.i = 0;
-+            if (i < len)
-+                this.c = s.codePointAt(i);
-+            else
-+                this.c = EOS;
-+        }
-+
-+        static Access parseAccess(String identity, String s) {
-+            return new Parser(identity, s).parseAccess();
-+        }
-+
-+        private Access parseAccess() {
-+            skipSpace();
-+            String type = parseWord();
-+            Access access;
-+            if (type.equals(READONLY))
-+                access = new Access(false, false, null);
-+            else if (type.equals(READWRITE))
-+                access = parseReadWrite();
-+            else {
-+                throw syntax("Expected " + READONLY + " or " + READWRITE +
-+                        ": " + type);
-             }
-+            if (c != EOS)
-+                throw syntax("Extra text at end of line");
-+            return access;
-         }
-+
-+        private Access parseReadWrite() {
-+            List<String> createClasses = new ArrayList<String>();
-+            boolean unregister = false;
-+            while (true) {
-+                skipSpace();
-+                if (c == EOS)
-+                    break;
-+                String type = parseWord();
-+                if (type.equals(UNREGISTER))
-+                    unregister = true;
-+                else if (type.equals(CREATE))
-+                    parseCreate(createClasses);
-+                else
-+                    throw syntax("Unrecognized keyword " + type);
-+            }
-+            return new Access(true, unregister, createClasses);
-+        }
-+
-+        private void parseCreate(List<String> createClasses) {
-+            while (true) {
-+                skipSpace();
-+                createClasses.add(parseClassName());
-+                skipSpace();
-+                if (c == ',')
-+                    next();
-+                else
-+                    break;
-+            }
-+        }
-+
-+        private String parseClassName() {
-+            // We don't check that classname components begin with suitable
-+            // characters (so we accept 1.2.3 for example).  This means that
-+            // there are only two states, which we can call dotOK and !dotOK
-+            // according as a dot (.) is legal or not.  Initially we're in
-+            // !dotOK since a classname can't start with a dot; after a dot
-+            // we're in !dotOK again; and after any other characters we're in
-+            // dotOK.  The classname is only accepted if we end in dotOK,
-+            // so we reject an empty name or a name that ends with a dot.
-+            final int start = i;
-+            boolean dotOK = false;
-+            while (true) {
-+                if (c == '.') {
-+                    if (!dotOK)
-+                        throw syntax("Bad . in class name");
-+                    dotOK = false;
-+                } else if (c == '*' || Character.isJavaIdentifierPart(c))
-+                    dotOK = true;
-+                else
-+                    break;
-+                next();
-+            }
-+            String className = s.substring(start, i);
-+            if (!dotOK)
-+                throw syntax("Bad class name " + className);
-+            return className;
-+        }
-+
-+        // Advance c and i to the next character, unless already at EOS.
-+        private void next() {
-+            if (c != EOS) {
-+                i += Character.charCount(c);
-+                if (i < len)
-+                    c = s.codePointAt(i);
-+                else
-+                    c = EOS;
-+            }
-+        }
-+
-+        private void skipSpace() {
-+            while (Character.isWhitespace(c))
-+                next();
-+        }
-+
-+        private String parseWord() {
-+            skipSpace();
-+            if (c == EOS)
-+                throw syntax("Expected word at end of line");
-+            final int start = i;
-+            while (c != EOS && !Character.isWhitespace(c))
-+                next();
-+            String word = s.substring(start, i);
-+            skipSpace();
-+            return word;
-+        }
-+
-+        private IllegalArgumentException syntax(String msg) {
-+            return new IllegalArgumentException(
-+                    msg + " [" + identity + " " + s + "]");
-+        }
-     }
- 
--    private Properties props;
-+    private Map<String, Access> accessMap;
-     private Properties originalProps;
-     private String accessFileName;
- }
---- old/src/share/lib/management/jmxremote.access	Mon Mar  9 18:11:05 2009
-+++ openjdk/jdk/src/share/lib/management/jmxremote.access	Mon Mar  9 18:11:05 2009
-@@ -8,7 +8,7 @@
- # passwords.  To be functional, a role must have an entry in
- # both the password and the access files.
- #
--# Default location of this file is $JRE/lib/management/jmxremote.access
-+# The default location of this file is $JRE/lib/management/jmxremote.access
- # You can specify an alternate location by specifying a property in 
- # the management config file $JRE/lib/management/management.properties
- # (See that file for details)
-@@ -16,7 +16,7 @@
- # The file format for password and access files is syntactically the same
- # as the Properties file format.  The syntax is described in the Javadoc
- # for java.util.Properties.load.
--# Typical access file has multiple  lines, where each line is blank,
-+# A typical access file has multiple lines, where each line is blank,
- # a comment (like this one), or an access control entry.
- #
- # An access control entry consists of a role name, and an
-@@ -29,11 +29,39 @@
- #                   role can read measurements but cannot perform any action
- #                   that changes the environment of the running program.
- #       "readwrite" grants access to read and write attributes of MBeans,
--#                   to invoke operations on them, and to create or remove them.
--#		    This access should be granted to only trusted clients, 
--#                   since they can potentially interfere with the smooth
--#		    operation of a running program 
-+#                   to invoke operations on them, and optionally
-+#                   to create or remove them. This access should be granted
-+#                   only to trusted clients, since they can potentially
-+#                   interfere with the smooth operation of a running program.
- #
-+# The "readwrite" access level can optionally be followed by the "create" and/or
-+# "unregister" keywords.  The "unregister" keyword grants access to unregister
-+# (delete) MBeans.  The "create" keyword grants access to create MBeans of a
-+# particular class or of any class matching a particular pattern.  Access
-+# should only be granted to create MBeans of known and trusted classes.
-+#
-+# For example, the following entry would grant readwrite access
-+# to "controlRole", as well as access to create MBeans of the class
-+# javax.management.monitor.CounterMonitor and to unregister any MBean:
-+#  controlRole readwrite \
-+#              create javax.management.monitor.CounterMonitorMBean \
-+#              unregister
-+# or equivalently:
-+#  controlRole readwrite unregister create javax.management.monitor.CounterMBean
-+#
-+# The following entry would grant readwrite access as well as access to create
-+# MBeans of any class in the packages javax.management.monitor and
-+# javax.management.timer:
-+#  controlRole readwrite \
-+#              create javax.management.monitor.*,javax.management.timer.* \
-+#              unregister
-+#
-+# The \ character is defined in the Properties file syntax to allow continuation
-+# lines as shown here.  A * in a class pattern matches a sequence of characters
-+# other than dot (.), so javax.management.monitor.* matches
-+# javax.management.monitor.CounterMonitor but not
-+# javax.management.monitor.foo.Bar.
-+#
- # A given role should have at most one entry in this file.  If a role
- # has no entry, it has no access.
- # If multiple entries are found for the same role name, then the last
-@@ -42,7 +70,10 @@
- #
- # Default access control entries:
- # o The "monitorRole" role has readonly access.  
--# o The "controlRole" role has readwrite access.
-+# o The "controlRole" role has readwrite access and can create the standard
-+#   Timer and Monitor MBeans defined by the JMX API.
- 
- monitorRole   readonly
--controlRole   readwrite
-+controlRole   readwrite \
-+              create javax.management.monitor.*,javax.management.timer.* \
-+              unregister
--- a/patches/security/icedtea-6737315.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
---- old/./src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	Tue Mar 10 17:35:37 2009
-+++ openjdk/jdk/src/share/classes/com/sun/jndi/ldap/VersionHelper12.java	Tue Mar 10 17:35:36 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 1999 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 1999-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -33,12 +33,33 @@
- 
- final class VersionHelper12 extends VersionHelper {
- 
-+    // System property to control whether classes may be loaded from an
-+    // arbitrary URL code base.
-+    private static final String TRUST_URL_CODEBASE_PROPERTY =
-+        "com.sun.jndi.ldap.object.trustURLCodebase";
-+
-+    // Determine whether classes may be loaded from an arbitrary URL code base.
-+    private static final String trustURLCodebase =
-+        AccessController.doPrivileged(
-+            new PrivilegedAction<String>() {
-+                public String run() {
-+                    return System.getProperty(TRUST_URL_CODEBASE_PROPERTY,
-+                            "false");
-+                }
-+            }
-+        );
-+
-     VersionHelper12() {} // Disallow external from creating one of these.
- 
-     ClassLoader getURLClassLoader(String[] url)
-         throws MalformedURLException {
-             ClassLoader parent = getContextClassLoader();
--            if (url != null) {
-+            /*
-+             * Classes may only be loaded from an arbitrary URL code base when
-+             * the system property com.sun.jndi.ldap.object.trustURLCodebase
-+             * has been set to "true".
-+             */
-+            if (url != null && "true".equalsIgnoreCase(trustURLCodebase)) {
-                 return URLClassLoader.newInstance(getUrlArray(url), parent);
-             } else {
-                 return parent;
--- a/patches/security/icedtea-6792554.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
---- old/src/share/native/com/sun/java/util/jar/pack/bands.cpp	Tue Mar  3 22:19:24 2009
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp	Tue Mar  3 22:19:23 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -94,6 +94,7 @@
-       assert(!valc->isMalloc);
-     }
-     xvs.init(u->rp, u->rplimit, valc);
-+    CHECK;
-     int X = xvs.getInt();
-     if (valc->S() != 0) {
-       assert(valc->min <= -256);
-@@ -117,6 +118,7 @@
-     byte XB_byte = (byte) XB;
-     byte* XB_ptr = &XB_byte;
-     cm.init(u->rp, u->rplimit, XB_ptr, 0, defc, length, null);
-+    CHECK;
-   } else {
-     NOT_PRODUCT(byte* meta_rp0 = u->meta_rp);
-     assert(u->meta_rp != null);
-@@ -215,8 +217,19 @@
-   if (length == 0)  return 0;
-   if (total_memo > 0)  return total_memo-1;
-   int total = getInt();
-+  // overflow checks require that none of the addends are <0,
-+  // and that the partial sums never overflow (wrap negative)
-+  if (total < 0) {
-+    abort("overflow detected");
-+    return 0;
-+  }
-   for (int k = length-1; k > 0; k--) {
--    total += vs[0].getInt();
-+    int prev_total = total;
-+    total += vs[0].getInt(); 
-+    if (total < prev_total) {
-+      abort("overflow detected");
-+      return 0;
-+    }
-   }
-   rewind();
-   total_memo = total+1;
---- old/src/share/native/com/sun/java/util/jar/pack/coding.cpp	Tue Mar  3 22:19:29 2009
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp	Tue Mar  3 22:19:27 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2002-2005 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2002-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -809,6 +809,7 @@
-     }
-     band_rp = vs.rp;
-   }
-+  CHECK;
- 
-   // Get an accurate upper limit now.
-   vs0.rplimit = band_rp;
---- old/src/share/native/com/sun/java/util/jar/pack/defines.h	Tue Mar  3 22:19:33 2009
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/defines.h	Tue Mar  3 22:19:31 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -155,6 +155,8 @@
- #define CHECK_NULL_(y,p)        _CHECK_DO((p)==null, return y)
- #define CHECK_NULL_0(p)         _CHECK_DO((p)==null, return 0)
- 
-+#define CHECK_COUNT(t)          if (t < 0){abort("bad value count");} CHECK
-+
- #define STR_TRUE   "true"
- #define STR_FALSE  "false"
- 
---- old/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Tue Mar  3 22:19:37 2009
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp	Tue Mar  3 22:19:35 2009
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2001-2008 Sun Microsystems, Inc.  All Rights Reserved.
-+ * Copyright 2001-2009 Sun Microsystems, Inc.  All Rights Reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -504,15 +504,40 @@
-   enum {
-     MAGIC_BYTES = 4,
-     AH_LENGTH_0 = 3,  //minver, majver, options are outside of archive_size
-+    AH_LENGTH_0_MAX = AH_LENGTH_0 + 1,  // options might have 2 bytes
-     AH_LENGTH   = 26, //maximum archive header length (w/ all fields)
-     // Length contributions from optional header fields:
-     AH_FILE_HEADER_LEN = 5, // sizehi/lo/next/modtime/files
-+    AH_ARCHIVE_SIZE_LEN = 2, // sizehi/lo only; part of AH_FILE_HEADER_LEN
-     AH_CP_NUMBER_LEN = 4,  // int/float/long/double
-     AH_SPECIAL_FORMAT_LEN = 2, // layouts/band-headers
-     AH_LENGTH_MIN = AH_LENGTH
-         -(AH_FILE_HEADER_LEN+AH_SPECIAL_FORMAT_LEN+AH_CP_NUMBER_LEN),
-+    ARCHIVE_SIZE_MIN = AH_LENGTH_MIN - (AH_LENGTH_0 + AH_ARCHIVE_SIZE_LEN),
-     FIRST_READ  = MAGIC_BYTES + AH_LENGTH_MIN
-   };
-+
-+
-+  assert(AH_LENGTH_MIN    == 15); // # of UNSIGNED5 fields required after archive_magic
-+  assert(ARCHIVE_SIZE_MIN == 10); // # of UNSIGNED5 fields required after archive_size
-+  // An absolute minimum null archive is magic[4], {minver,majver,options}[3],
-+  // archive_size[0], cp_counts[8], class_counts[4], for a total of 19 bytes.
-+  // (Note that archive_size is optional; it may be 0..10 bytes in length.)
-+  // The first read must capture everything up through the options field.
-+  // This happens to work even if {minver,majver,options} is a pathological
-+  // 15 bytes long.  Legal pack files limit those three fields to 1+1+2 bytes.
-+  assert(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0 * B_MAX);
-+
-+  // Up through archive_size, the largest possible archive header is
-+  // magic[4], {minver,majver,options}[4], archive_size[10].
-+  // (Note only the low 12 bits of options are allowed to be non-zero.)
-+  // In order to parse archive_size, we need at least this many bytes
-+  // in the first read.  Of course, if archive_size_hi is more than
-+  // a byte, we probably will fail to allocate the buffer, since it
-+  // will be many gigabytes long.  This is a practical, not an
-+  // architectural limit to Pack200 archive sizes.
-+  assert(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0_MAX + 2*B_MAX);
-+
-   bool foreign_buf = (read_input_fn == null);
-   byte initbuf[FIRST_READ + C_SLOP + 200];  // 200 is for JAR I/O
-   if (foreign_buf) {
-@@ -528,7 +553,7 @@
-     // There is no way to tell the caller that we used only part of them.
-     // Therefore, the caller must use only a bare minimum of read-ahead.
-     if (inbytes.len > FIRST_READ) {
--      abort("too much pushback");
-+      abort("too much read-ahead");
-       return;
-     }
-     input.set(initbuf, sizeof(initbuf));
-@@ -538,7 +563,7 @@
-     rplimit += inbytes.len;
-     bytes_read += inbytes.len;
-   }
--  // Read only 19 bytes, which is certain to contain #archive_size fields,
-+  // Read only 19 bytes, which is certain to contain #archive_options fields,
-   // but is certain not to overflow past the archive_header.
-   input.b.len = FIRST_READ;
-   if (!ensure_input(FIRST_READ))
-@@ -611,8 +636,8 @@
-   if ((archive_options & ~OPTION_LIMIT) != 0) {
-     fprintf(errstrm, "Warning: Illegal archive options 0x%x\n",
-             archive_options);
--    // Do not abort.  If the format really changes, version numbers will bump.
--    //abort("illegal archive options");
-+    abort("illegal archive options");
-+    return;
-   }
- 
-   if ((archive_options & AO_HAVE_FILE_HEADERS) != 0) {
-@@ -643,8 +668,17 @@
-       return;
-     }
-   } else if (archive_size != 0) {
-+    if (archive_size < ARCHIVE_SIZE_MIN) {
-+      abort("impossible archive size");  // bad input data
-+      return;
-+    }
-+    if (archive_size < header_size_1) {
-+      abort("too much read-ahead");  // somehow we pre-fetched too much?
-+      return;
-+    }   
-     input.set(U_NEW(byte, add_size(header_size_0, archive_size, C_SLOP)),
-               (size_t) header_size_0 + archive_size);
-+    CHECK;
-     assert(input.limit()[0] == 0);
-     // Move all the bytes we read initially into the real buffer.
-     input.b.copyFrom(initbuf, header_size);
-@@ -659,6 +693,7 @@
-     rp = rplimit = input.base();
-     // Set up input buffer as if we already read the header:
-     input.b.copyFrom(initbuf, header_size);
-+    CHECK;
-     rplimit += header_size;
-     while (ensure_input(input.limit() - rp)) {
-       size_t dataSoFar = input_remaining();
-@@ -694,8 +729,10 @@
- 
-   if ((archive_options & AO_HAVE_FILE_HEADERS) != 0) {
-     archive_next_count = hdr.getInt();
-+    CHECK_COUNT(archive_next_count);
-     archive_modtime = hdr.getInt();
-     file_count = hdr.getInt();
-+    CHECK_COUNT(file_count);
-     hdrVals += 3;
-   } else {
-     hdrValsSkipped += 3;
-@@ -703,7 +740,9 @@
- 
-   if ((archive_options & AO_HAVE_SPECIAL_FORMATS) != 0) {
-     band_headers_size = hdr.getInt();
-+    CHECK_COUNT(band_headers_size);
-     attr_definition_count = hdr.getInt();
-+    CHECK_COUNT(attr_definition_count);
-     hdrVals += 2;
-   } else {
-     hdrValsSkipped += 2;
-@@ -723,13 +762,16 @@
-       }
-     }
-     cp_counts[k] = hdr.getInt();
-+    CHECK_COUNT(cp_counts[k]);
-     hdrVals += 1;
-   }
- 
-   ic_count = hdr.getInt();
-+  CHECK_COUNT(ic_count);
-   default_class_minver = hdr.getInt();
-   default_class_majver = hdr.getInt();
-   class_count = hdr.getInt();
-+  CHECK_COUNT(class_count);
-   hdrVals += 4;
- 
-   // done with archive_header
-@@ -783,7 +825,6 @@
-   bytes::of(band_headers.limit(), C_SLOP).clear(_meta_error);
- }
- 
--
- void unpacker::finish() {
-   if (verbose >= 1) {
-     fprintf(errstrm,
-@@ -2089,13 +2130,14 @@
- 
-   field_descr.readData(field_count);
-   read_attrs(ATTR_CONTEXT_FIELD, field_count);
-+  CHECK;
- 
-   method_descr.readData(method_count);
-   read_attrs(ATTR_CONTEXT_METHOD, method_count);
--
-   CHECK;
- 
-   read_attrs(ATTR_CONTEXT_CLASS, class_count);
-+  CHECK;
- 
-   read_code_headers();
- 
-@@ -2122,10 +2164,12 @@
-   assert(endsWith(xxx_flags_hi.name, "_flags_hi"));
-   if (haveLongFlags)
-     xxx_flags_hi.readData(obj_count);
-+  CHECK;
- 
-   band& xxx_flags_lo = ad.xxx_flags_lo();
-   assert(endsWith(xxx_flags_lo.name, "_flags_lo"));
-   xxx_flags_lo.readData(obj_count);
-+  CHECK;
- 
-   // pre-scan flags, counting occurrences of each index bit
-   julong indexMask = ad.flagIndexMask();  // which flag bits are index bits?
-@@ -2148,11 +2192,13 @@
-   assert(endsWith(xxx_attr_count.name, "_attr_count"));
-   // There is one count element for each 1<<16 bit set in flags:
-   xxx_attr_count.readData(ad.predefCount(X_ATTR_OVERFLOW));
-+  CHECK;
- 
-   band& xxx_attr_indexes = ad.xxx_attr_indexes();
-   assert(endsWith(xxx_attr_indexes.name, "_attr_indexes"));
-   int overflowIndexCount = xxx_attr_count.getIntTotal();
-   xxx_attr_indexes.readData(overflowIndexCount);
-+  CHECK;
-   // pre-scan attr indexes, counting occurrences of each value
-   for (i = 0; i < overflowIndexCount; i++) {
-     idx = xxx_attr_indexes.getInt();
-@@ -2183,6 +2229,7 @@
-     }
-   }
-   ad.xxx_attr_calls().readData(backwardCounts);
-+  CHECK;
- 
-   // Read built-in bands.
-   // Mostly, these are hand-coded equivalents to readBandData().
-@@ -2191,13 +2238,16 @@
- 
-     count = ad.predefCount(CLASS_ATTR_SourceFile);
-     class_SourceFile_RUN.readData(count);
-+    CHECK;
- 
-     count = ad.predefCount(CLASS_ATTR_EnclosingMethod);
-     class_EnclosingMethod_RC.readData(count);
-     class_EnclosingMethod_RDN.readData(count);
-+    CHECK;
- 
-     count = ad.predefCount(X_ATTR_Signature);
-     class_Signature_RS.readData(count);
-+    CHECK;
- 
-     ad.readBandData(X_ATTR_RuntimeVisibleAnnotations);
-     ad.readBandData(X_ATTR_RuntimeInvisibleAnnotations);
-@@ -2204,17 +2254,22 @@
- 
-     count = ad.predefCount(CLASS_ATTR_InnerClasses);
-     class_InnerClasses_N.readData(count);
-+    CHECK;
-+
-     count = class_InnerClasses_N.getIntTotal();
-     class_InnerClasses_RC.readData(count);
-     class_InnerClasses_F.readData(count);
-+    CHECK;
-     // Drop remaining columns wherever flags are zero:
-     count -= class_InnerClasses_F.getIntCount(0);
-     class_InnerClasses_outer_RCN.readData(count);
-     class_InnerClasses_name_RUN.readData(count);
-+    CHECK;
- 
-     count = ad.predefCount(CLASS_ATTR_ClassFile_version);
-     class_ClassFile_version_minor_H.readData(count);
-     class_ClassFile_version_major_H.readData(count);
-+    CHECK;
-     break;
- 
-   case ATTR_CONTEXT_FIELD:
-@@ -2221,12 +2276,15 @@
- 
-     count = ad.predefCount(FIELD_ATTR_ConstantValue);
-     field_ConstantValue_KQ.readData(count);
-+    CHECK;
- 
-     count = ad.predefCount(X_ATTR_Signature);
-     field_Signature_RS.readData(count);
-+    CHECK;
- 
-     ad.readBandData(X_ATTR_RuntimeVisibleAnnotations);
-     ad.readBandData(X_ATTR_RuntimeInvisibleAnnotations);
-+    CHECK;
-     break;
- 
-   case ATTR_CONTEXT_METHOD:
-@@ -2238,9 +2296,11 @@
-     method_Exceptions_N.readData(count);
-     count = method_Exceptions_N.getIntTotal();
-     method_Exceptions_RC.readData(count);
-+    CHECK;
- 
-     count = ad.predefCount(X_ATTR_Signature);
-     method_Signature_RS.readData(count);
-+    CHECK;
- 
-     ad.readBandData(X_ATTR_RuntimeVisibleAnnotations);
-     ad.readBandData(X_ATTR_RuntimeInvisibleAnnotations);
-@@ -2247,6 +2307,7 @@
-     ad.readBandData(METHOD_ATTR_RuntimeVisibleParameterAnnotations);
-     ad.readBandData(METHOD_ATTR_RuntimeInvisibleParameterAnnotations);
-     ad.readBandData(METHOD_ATTR_AnnotationDefault);
-+    CHECK;
-     break;
- 
-   case ATTR_CONTEXT_CODE:
-@@ -2258,8 +2319,10 @@
-       return;
-     }
-     code_StackMapTable_N.readData(count);
-+    CHECK;
-     count = code_StackMapTable_N.getIntTotal();
-     code_StackMapTable_frame_T.readData(count);
-+    CHECK;
-     // the rest of it depends in a complicated way on frame tags
-     {
-       int fat_frame_count = 0;
-@@ -2293,18 +2356,23 @@
-       // deal completely with fat frames:
-       offset_count += fat_frame_count;
-       code_StackMapTable_local_N.readData(fat_frame_count);
-+      CHECK;
-       type_count += code_StackMapTable_local_N.getIntTotal();
-       code_StackMapTable_stack_N.readData(fat_frame_count);
-       type_count += code_StackMapTable_stack_N.getIntTotal();
-+      CHECK;
-       // read the rest:
-       code_StackMapTable_offset.readData(offset_count);
-       code_StackMapTable_T.readData(type_count);
-+      CHECK;
-       // (7) [RCH]
-       count = code_StackMapTable_T.getIntCount(7);
-       code_StackMapTable_RC.readData(count);
-+      CHECK;
-       // (8) [PH]
-       count = code_StackMapTable_T.getIntCount(8);
-       code_StackMapTable_P.readData(count);
-+      CHECK;
-     }
- 
-     count = ad.predefCount(CODE_ATTR_LineNumberTable);
-@@ -2626,7 +2694,9 @@
-   code_max_na_locals.readData();
-   code_handler_count.readData();
-   totalHandlerCount += code_handler_count.getIntTotal();
-+  CHECK;
- 
-+
-   // Read handler specifications.
-   // Cf. PackageReader.readCodeHandlers.
-   code_handler_start_P.readData(totalHandlerCount);
-@@ -2633,8 +2703,10 @@
-   code_handler_end_PO.readData(totalHandlerCount);
-   code_handler_catch_PO.readData(totalHandlerCount);
-   code_handler_class_RCN.readData(totalHandlerCount);
-+  CHECK;
- 
-   read_attrs(ATTR_CONTEXT_CODE, totalFlagsCount);
-+  CHECK;
- }
- 
- static inline bool is_in_range(uint n, uint min, uint max) {
--- a/patches/security/icedtea-6804996.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
---- old/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	Thu Mar  5 16:18:35 2009
-+++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_gif.c	Thu Mar  5 16:18:34 2009
-@@ -53,10 +53,6 @@
- // convert libungif samples to our ones
- #define MAKE_QUAD_GIF(c,a) MAKE_QUAD((c).Red, (c).Green, (c).Blue, (a))
- 
--#define SAFE_TO_ALLOC(c, sz)                                               \
--    (((c) > 0) && ((sz) > 0) &&                                            \
--     ((0xffffffffu / ((unsigned int)(c))) > (unsigned int)(sz)))
--
- /* stdio FILE* and memory input functions for libungif */
- int
- SplashStreamGifInputFunc(GifFileType * gif, GifByteType * buf, int n)
---- old/src/share/native/sun/awt/splashscreen/splashscreen_impl.h	Thu Mar  5 16:18:38 2009
-+++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_impl.h	Thu Mar  5 16:18:37 2009
-@@ -155,6 +155,10 @@
- 
- void SplashInitFrameShape(Splash * splash, int imageIndex);
- 
-+#define SAFE_TO_ALLOC(c, sz)                                               \
-+    (((c) > 0) && ((sz) > 0) &&                                            \
-+     ((0xffffffffu / ((unsigned int)(c))) > (unsigned int)(sz)))
-+
- #define dbgprintf printf
- 
- #endif
---- old/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Thu Mar  5 16:18:41 2009
-+++ openjdk/jdk/src/share/native/sun/awt/splashscreen/splashscreen_png.c	Thu Mar  5 16:18:40 2009
-@@ -103,9 +103,17 @@
- 
-     rowbytes = png_get_rowbytes(png_ptr, info_ptr);
- 
-+    if (!SAFE_TO_ALLOC(rowbytes, height)) {
-+        goto done;
-+    }
-+
-     if ((image_data = (unsigned char *) malloc(rowbytes * height)) == NULL) {
-         goto done;
-     }
-+
-+    if (!SAFE_TO_ALLOC(height, sizeof(png_bytep))) {
-+        goto done;
-+    }
-     if ((row_pointers = (png_bytepp) malloc(height * sizeof(png_bytep)))
-             == NULL) {
-         goto done;
-@@ -121,13 +129,28 @@
-     splash->width = width;
-     splash->height = height;
- 
-+    if (!SAFE_TO_ALLOC(splash->width, splash->imageFormat.depthBytes)) {
-+        goto done;
-+    }
-     stride = splash->width * splash->imageFormat.depthBytes;
- 
-+    if (!SAFE_TO_ALLOC(splash->height, stride)) {
-+        goto done;
-+    }
-     splash->frameCount = 1;
-     splash->frames = (SplashImage *)
-         malloc(sizeof(SplashImage) * splash->frameCount);
-+
-+    if (splash->frames == NULL) {
-+        goto done;
-+    }
-+
-     splash->loopCount = 1;
-     splash->frames[0].bitmapBits = malloc(stride * splash->height);
-+    if (splash->frames[0].bitmapBits == NULL) {
-+        free(splash->frames);
-+        goto done;
-+    }
-     splash->frames[0].delay = 0;
- 
-     /* FIXME: sort out the real format */
--- a/patches/security/icedtea-6804997.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
---- old/src/share/native/sun/awt/giflib/dgif_lib.c	Thu Mar  5 16:33:17 2009
-+++ openjdk/jdk/src/share/native/sun/awt/giflib/dgif_lib.c	Thu Mar  5 16:33:16 2009
-@@ -722,6 +722,10 @@
-     GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private;
- 
-     READ(GifFile, &CodeSize, 1);    /* Read Code size from file. */
-+    if (CodeSize >= 12) {
-+        /* Invalid initial code size: report failure */
-+        return GIF_ERROR;
-+    }
-     BitsPerPixel = CodeSize;
- 
-     Private->Buf[0] = 0;    /* Input Buffer empty. */
-@@ -964,10 +968,13 @@
- 
-     /* If code cannot fit into RunningBits bits, must raise its size. Note
-      * however that codes above 4095 are used for special signaling.  */
--    if (++Private->RunningCode > Private->MaxCode1 &&
--        Private->RunningBits < LZ_BITS) {
--        Private->MaxCode1 <<= 1;
--        Private->RunningBits++;
-+    if (++Private->RunningCode > Private->MaxCode1) {
-+        if (Private->RunningBits < LZ_BITS) {
-+            Private->MaxCode1 <<= 1;
-+            Private->RunningBits++;
-+        } else {
-+            Private->RunningCode = Private->MaxCode1;
-+        }
-     }
-     return GIF_OK;
- }
--- a/patches/security/icedtea-6804998.patch	Thu Apr 16 10:55:27 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
---- old/src/share/classes/sun/awt/image/GifImageDecoder.java	Thu Mar  5 17:00:25 2009
-+++ openjdk/jdk/src/share/classes/sun/awt/image/GifImageDecoder.java	Thu Mar  5 17:00:24 2009
-@@ -585,9 +585,16 @@
-             System.out.print("Reading a " + width + " by " + height + " " +
-                       (interlace ? "" : "non-") + "interlaced image...");
-         }
--
-+        int initCodeSize = ExtractByte(block, 9);
-+        if (initCodeSize >= 12) {
-+            if (verbose) {
-+                System.out.println("Invalid initial code size: " +
-+                                   initCodeSize);
-+            }
-+            return false;
-+        }
-         boolean ret = parseImage(x, y, width, height,
--                                 interlace, ExtractByte(block, 9),
-+                                 interlace, initCodeSize,
-                                  block, rasline, model);
- 
-         if (!ret) {
---- old/src/share/native/sun/awt/image/gif/gifdecoder.c	Thu Mar  5 17:00:28 2009
-+++ openjdk/jdk/src/share/native/sun/awt/image/gif/gifdecoder.c	Thu Mar  5 17:00:27 2009
-@@ -191,6 +191,11 @@
-     int passht = passinc;
-     int len;
- 
-+    /* We have verified the initial code size on the java layer.
-+     * Here we just check bounds for particular indexes. */
-+    if (freeCode >= 4096 || maxCode >= 4096) {
-+        return 0;
-+    }
-     if (blockh == 0 || raslineh == 0
-         || prefixh == 0 || suffixh == 0
-         || outCodeh == 0)