[arch-commits] Commit in openjdk6/repos (5 files)

andyrtr at archlinux.org andyrtr at archlinux.org
Tue Nov 3 18:03:32 UTC 2009


    Date: Tuesday, November 3, 2009 @ 13:03:32
  Author: andyrtr
Revision: 58100

Merged revisions 58099 via svnmerge from 
svn+ssh://gerolde.archlinux.org/srv/svn-packages/openjdk6/trunk

........
  r58099 | andyrtr | 2009-11-03 18:02:44 +0000 (Di, 03 Nov 2009) | 2 lines
  
  upgpkg: openjdk6 1.6.1-2
      rebuild fix buildfix for new Xorg, add upstream fix for libjpeg7, add latest security patches that just went upstream
........

Added:
  openjdk6/repos/extra-x86_64/X11.diff
    (from rev 58099, openjdk6/trunk/X11.diff)
  openjdk6/repos/extra-x86_64/libjpeg7.diff
    (from rev 58099, openjdk6/trunk/libjpeg7.diff)
  openjdk6/repos/extra-x86_64/security.diff
    (from rev 58099, openjdk6/trunk/security.diff)
Modified:
  openjdk6/repos/extra-x86_64/	(properties)
  openjdk6/repos/extra-x86_64/PKGBUILD

---------------+
 PKGBUILD      |   25 +-
 X11.diff      |   34 +++
 libjpeg7.diff |  252 +++++++++++++++++++++++
 security.diff |  606 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 910 insertions(+), 7 deletions(-)


Property changes on: openjdk6/repos/extra-x86_64
___________________________________________________________________
Modified: svnmerge-integrated
   - /openjdk6/trunk:1-52576
   + /openjdk6/trunk:1-58099

Modified: extra-x86_64/PKGBUILD
===================================================================
--- extra-x86_64/PKGBUILD	2009-11-03 18:02:44 UTC (rev 58099)
+++ extra-x86_64/PKGBUILD	2009-11-03 18:03:32 UTC (rev 58100)
@@ -8,7 +8,7 @@
 _openjdk_version=b16
 _openjdk_date=24_apr_2009
 pkgver=${_icedteaver}
-pkgrel=1
+pkgrel=2
 url='http://icedtea.classpath.org'
 arch=('i686' 'x86_64')
 license=('GPL')
@@ -29,7 +29,9 @@
 	aatext_by_default.diff
 	fontconfig-paths.diff
 	nonreparenting-wm.diff
-	libjpeg7.patch
+	libjpeg7.diff
+	X11.diff
+	security.diff
 	openjdk6.profile)
 noextract=(openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz ${_hotspotver}.tar.gz)
 md5sums=('f1c98bb31de87a5e15550b9672ea4027'
@@ -40,9 +42,11 @@
          'ef60d567c0d9bad111212851220deafd'
          'ee1afda124d5927345014ab382ef581e'
          '409812b5675f9678b1c9e1a12a945a9a'
-         '2f820743e8ed5540b5667fda33c53d26'
+         '024a266e12d8cd89c38dfd9080573f82'
+         '509fbe1a3ac27fd50a38f62f501bb429'
+         'c466cbab2ca4cc0265e575f189e6e853'
          '10d13b19762218ee157273cee874394e')
-                                                                          
+                                               
 build() {
 
   unset JAVA_HOME
@@ -60,11 +64,18 @@
 
   cp ${srcdir}/*.diff ${srcdir}/icedtea6-${_icedteaver}/patches/
 
-  # workaround for libjpeg .so bump to avoid a few segfaults. some stuff will remain broken
-  patch -Np1 -i ${srcdir}/libjpeg7.patch || return 1
+  # some security fixes http://icedtea.classpath.org/hg/release/icedtea6-1.6/rev/2c854193cc9d
+  patch -Np1 -i ${srcdir}/security.diff || return 1
+  # http://icedtea.classpath.org/hg/icedtea6/rev/b862917f2b93
+  patch -Np1 -i ${srcdir}/libjpeg7.diff || return 1
+  # fix for new Xorg headers
+  # http://icedtea.classpath.org/hg/icedtea6/rev/c75348f9db6a
+  patch -Np1 -i ${srcdir}/X11.diff || return 1
 
-  export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/aatext_by_default.diff patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff "
+  autoreconf
 
+  export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/aatext_by_default.diff patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff"
+
   export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}"
   export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}"
   unset MAKEFLAGS

Copied: openjdk6/repos/extra-x86_64/X11.diff (from rev 58099, openjdk6/trunk/X11.diff)
===================================================================
--- extra-x86_64/X11.diff	                        (rev 0)
+++ extra-x86_64/X11.diff	2009-11-03 18:03:32 UTC (rev 58100)
@@ -0,0 +1,34 @@
+# HG changeset patch
+# User Mark Wielaard <mark at klomp.org>
+# Date 1257249030 -3600
+# Node ID c75348f9db6a48f22f2568c8f2d346e5d0ac73be
+# Parent 547923046557e6b3d0f675274e783571a385bb85
+Support newer X11 headers for awt_GraphicsEnv.h.
+
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/patches/icedtea-xshm.patch	Tue Nov 03 12:50:30 2009 +0100
+@@ -0,0 +1,13 @@
++--- old/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h	2009-07-17 10:36:09.000000000 -0400
+++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h	2009-07-30 13:25:52.000000000 -0400
++@@ -42,6 +42,10 @@
++ #include <sys/ipc.h>
++ #include <sys/shm.h>
++ #include <X11/extensions/XShm.h>
+++#ifndef X_ShmAttach
+++#include <X11/Xmd.h>
+++#include <X11/extensions/shmproto.h>
+++#endif
++ 
++ extern int XShmQueryExtension();
++ 
+
+--- icedtea6-1.6.1/Makefile.am	2009-09-14 16:42:42.367592000 +0000
++++ icedtea6-1.6.1/Makefile.am.new	2009-11-03 16:42:12.387191646 +0000
+@@ -708,6 +708,7 @@
+ 	patches/icedtea-explicit-target-arch.patch \
+ 	patches/openjdk/6648816.patch \
+ 	patches/openjdk/oj100103-debugger-socket-overflow.patch \
++	patches/icedtea-xshm.patch \
+ 	$(DISTRIBUTION_PATCHES)
+ 
+ stamps/extract.stamp: stamps/download.stamp

Copied: openjdk6/repos/extra-x86_64/libjpeg7.diff (from rev 58099, openjdk6/trunk/libjpeg7.diff)
===================================================================
--- extra-x86_64/libjpeg7.diff	                        (rev 0)
+++ extra-x86_64/libjpeg7.diff	2009-11-03 18:03:32 UTC (rev 58100)
@@ -0,0 +1,252 @@
+# HG changeset patch
+# User Jon VanAlten <jon.vanalten at redhat.com>
+# Date 1256594970 14400
+# Node ID b862917f2b93f49eab266966d6ffe96156e7d026
+# Parent ad96ca42aab39a291416b5e326d29e49b87dc640
+2009-10-26 Jon VanAlten <jon.vanalten at redhat.com>
+
+	Fixes Bug #367
+        * patches/icedtea-libraries.patch: Check for libjpeg.so.7.
+        * INSTALL: Indicate newer versions of libjpeg are supported.
+
+
+--- a/INSTALL	Thu Oct 22 08:00:17 2009 +0200
++++ b/INSTALL	Mon Oct 26 18:09:30 2009 -0400
+@@ -27,7 +27,7 @@ libXinerama-devel
+ libXinerama-devel
+ giflib-devel
+ libpng-devel
+-libjpeg-devel = 6b
++libjpeg-devel >= 6b
+ zlib-devel
+ rhino (can be disabled using --without-rhino)
+ 
+--- a/patches/icedtea-libraries.patch	Thu Oct 22 08:00:17 2009 +0200
++++ b/patches/icedtea-libraries.patch	Mon Oct 26 18:09:30 2009 -0400
+@@ -25045,14 +25045,17 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  }
+  
+  
+-@@ -2317,6 +2377,142 @@
++@@ -2317,6 +2377,145 @@
+  
+  /********************** end of destination manager ************/
+  
+ +METHODDEF(void)
+ +initIDs()
+ +{
+-+    void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL);
+++    void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL);
+++    if (handle == NULL) {
+++       handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL);
+++    }
+ +    
+ +    jpegstderror = (fn_jpegstderror)dlsym(handle, "jpeg_std_error");
+ +    if (jpegstderror == NULL) {
+@@ -25188,7 +25191,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  /********************** Writer JNI calls **********************/
+  
+  
+-@@ -2328,6 +2524,8 @@
++@@ -2328,6 +2527,8 @@
+       jclass qTableClass,
+       jclass huffClass) {
+  
+@@ -25197,7 +25200,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      ImageOutputStream_writeID = (*env)->GetMethodID(env,
+                                                      IOSClass,
+                                                      "write",
+-@@ -2401,7 +2599,7 @@
++@@ -2401,7 +2602,7 @@
+      }
+  
+      /* We set up the normal JPEG error routines, then override error_exit. */
+@@ -25206,7 +25209,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      jerr->pub.error_exit = sun_jpeg_error_exit;
+      /* We need to setup our own print routines */
+      jerr->pub.output_message = sun_jpeg_output_message;
+-@@ -2418,7 +2616,7 @@
++@@ -2418,7 +2619,7 @@
+      }
+  
+      /* Perform library initialization */
+@@ -25215,7 +25218,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+      /* Now set up the destination  */
+      dest = malloc(sizeof(struct jpeg_destination_mgr));
+-@@ -2527,7 +2725,7 @@
++@@ -2527,7 +2728,7 @@
+          return;
+      }
+  
+@@ -25224,7 +25227,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+      data->streamBuf.suspendable = FALSE;
+      if (qtables != NULL) {
+-@@ -2542,7 +2740,7 @@
++@@ -2542,7 +2743,7 @@
+                     DCHuffmanTables, ACHuffmanTables, TRUE);
+      }
+  
+@@ -25233,7 +25236,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      RELEASE_ARRAYS(env, data, NULL);
+  }
+  
+-@@ -2698,9 +2896,9 @@
++@@ -2698,9 +2899,9 @@
+      cinfo->input_components = numBands;
+      cinfo->in_color_space = inCs;
+  
+@@ -25245,7 +25248,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+      cinfo->optimize_coding = optimize;
+  
+-@@ -2737,7 +2935,7 @@
++@@ -2737,7 +2938,7 @@
+      (*env)->ReleaseIntArrayElements(env, QtableSelectors,
+                                      qsels, JNI_ABORT);
+  
+@@ -25254,7 +25257,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+      qlen = setQTables(env, (j_common_ptr) cinfo, qtables, writeDQT);
+  
+-@@ -2762,7 +2960,7 @@
++@@ -2762,7 +2963,7 @@
+  
+      if (progressive) {
+          if (numScans == 0) { // then use default scans
+@@ -25263,7 +25266,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+          } else {
+              cinfo->num_scans = numScans;
+              // Copy the scanInfo to a local array
+-@@ -2804,7 +3002,7 @@
++@@ -2804,7 +3005,7 @@
+  #endif
+  
+      // start the compressor; tables must already be set
+@@ -25272,7 +25275,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+      if (haveMetadata) {
+          // Flush the buffer
+-@@ -2868,7 +3066,7 @@
++@@ -2868,7 +3069,7 @@
+              }
+          }
+          // write it out
+@@ -25281,7 +25284,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+          targetLine += stepY;
+      }
+  
+-@@ -2877,9 +3075,9 @@
++@@ -2877,9 +3078,9 @@
+       * so use jpeg_abort instead of jpeg_finish_compress.
+       */
+      if (cinfo->next_scanline == cinfo->image_height) {
+@@ -25339,11 +25342,14 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  /* Initialize the Java VM instance variable when the library is
+     first loaded */
+  JavaVM *jvm;
+-@@ -462,6 +490,68 @@
++@@ -462,6 +493,71 @@
+  Java_sun_awt_image_JPEGImageDecoder_initIDs(JNIEnv *env, jclass cls,
+                                              jclass InputStreamClass)
+  {
+-+    void *handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL);
+++    void *handle = dlopen("libjpeg.so.7", RTLD_LAZY | RTLD_GLOBAL);
+++    if (handle == NULL) {
+++       handle = dlopen("libjpeg.so.62", RTLD_LAZY | RTLD_GLOBAL);
+++    }
+ + 
+ +    jpegstderror = (fn_jpegstderror)dlsym(handle, "jpeg_std_error");
+ +    if (jpegstderror == NULL) {
+@@ -25408,7 +25414,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      sendHeaderInfoID = (*env)->GetMethodID(env, cls, "sendHeaderInfo",
+                                             "(IIZZZ)Z");
+      sendPixelsByteID = (*env)->GetMethodID(env, cls, "sendPixels", "([BI)Z");
+-@@ -519,7 +609,7 @@
++@@ -519,7 +612,7 @@
+    /* Step 1: allocate and initialize JPEG decompression object */
+  
+    /* We set up the normal JPEG error routines, then override error_exit. */
+@@ -25417,7 +25423,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+    jerr.pub.error_exit = sun_jpeg_error_exit;
+  
+    /* We need to setup our own print routines */
+-@@ -530,7 +620,7 @@
++@@ -530,7 +623,7 @@
+      /* If we get here, the JPEG code has signaled an error.
+       * We need to clean up the JPEG object, close the input file, and return.
+       */
+@@ -25426,7 +25432,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      RELEASE_ARRAYS(env, &jsrc);
+      if (!(*env)->ExceptionOccurred(env)) {
+          char buffer[JMSG_LENGTH_MAX];
+-@@ -541,7 +631,7 @@
++@@ -541,7 +634,7 @@
+      return;
+    }
+    /* Now we can initialize the JPEG decompression object. */
+@@ -25435,7 +25441,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+    /* Step 2: specify data source (eg, a file) */
+  
+-@@ -555,17 +645,17 @@
++@@ -555,17 +648,17 @@
+    jsrc.pub.init_source = sun_jpeg_init_source;
+    jsrc.pub.fill_input_buffer = sun_jpeg_fill_input_buffer;
+    jsrc.pub.skip_input_data = sun_jpeg_skip_input_data;
+@@ -25457,7 +25463,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+    grayscale = (cinfo.out_color_space == JCS_GRAYSCALE);
+  #ifdef YCCALPHA
+    hasalpha = (cinfo.out_color_space == JCS_RGBA);
+-@@ -584,7 +674,7 @@
++@@ -584,7 +677,7 @@
+                                    grayscale, hasalpha, buffered_mode);
+    if ((*env)->ExceptionOccurred(env) || !ret) {
+      /* No more interest in this image... */
+@@ -25466,7 +25472,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      return;
+    }
+    /* Make a one-row-high sample array with enough room to expand to ints */
+-@@ -595,7 +685,7 @@
++@@ -595,7 +688,7 @@
+    }
+  
+    if (jsrc.hOutputBuffer == 0 || !GET_ARRAYS(env, &jsrc)) {
+@@ -25475,7 +25481,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+      return;
+    }
+  
+-@@ -613,7 +703,7 @@
++@@ -613,7 +706,7 @@
+  
+    /* Step 5: Start decompressor */
+  
+@@ -25484,7 +25490,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+    /* We may need to do some setup of our own at this point before reading
+     * the data.  After jpeg_start_decompress() we have the correct scaled
+-@@ -638,28 +728,28 @@
++@@ -638,28 +731,28 @@
+            do {
+                sun_jpeg_fill_suspended_buffer(&cinfo);
+                jsrc.suspendable = TRUE;
+@@ -25517,7 +25523,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+  
+            if (grayscale) {
+                RELEASE_ARRAYS(env, &jsrc);
+-@@ -695,18 +785,18 @@
++@@ -695,18 +788,18 @@
+            if ((*env)->ExceptionOccurred(env) || !ret ||
+                !GET_ARRAYS(env, &jsrc)) {
+                /* No more interest in this image... */
+@@ -25539,7 +25545,7 @@ diff -ruN ..openjdk.old/openjdk/jdk/src/
+    /* We can ignore the return value since suspension is not possible
+     * with the stdio data source.
+     * (nor with the Java data source)
+-@@ -715,7 +805,7 @@
++@@ -715,7 +808,7 @@
+    /* Step 8: Release JPEG decompression object */
+  
+    /* This is an important step since it will release a good deal of memory. */
+

Copied: openjdk6/repos/extra-x86_64/security.diff (from rev 58099, openjdk6/trunk/security.diff)
===================================================================
--- extra-x86_64/security.diff	                        (rev 0)
+++ extra-x86_64/security.diff	2009-11-03 18:03:32 UTC (rev 58100)
@@ -0,0 +1,606 @@
+# HG changeset patch
+# User Martin Matejovic <mmatejov at redhat.com>
+# Date 1257267020 -3600
+# Node ID 2c854193cc9dfc94c4d26bb4f4b0fca9fa95d0c2
+# Parent 7c131a5e1ccff31714c05376c1c27333283e5d88
+Add latest security patches
+2009-11-03 Martin Matejovic <mmatejov at redhat.com>
+	* patches/security/icedtea-6862968.patch
+	* patches/security/icedtea-6863503.patch
+	* patches/security/icedtea-6864911.patch
+	* patches/security/icedtea-6872357.patch
+	* patches/security/icedtea-6874643.patch
+	* Makefile.am: apply the above
+
+--- a/ChangeLog	Mon Sep 14 17:40:46 2009 +0100
++++ b/ChangeLog	Tue Nov 03 17:50:20 2009 +0100
+@@ -1,3 +1,11 @@ 2009-09-14  Andrew Haley  <aph at redhat.co
++2009-11-03 Martin Matejovic <mmatejov at redhat.com>
++	* patches/security/icedtea-6862968.patch
++	* patches/security/icedtea-6863503.patch
++	* patches/security/icedtea-6864911.patch
++	* patches/security/icedtea-6872357.patch
++	* patches/security/icedtea-6874643.patch
++	* Makefile.am: apply the above
++
+ 2009-09-14  Andrew Haley  <aph at redhat.com>
+ 
+ 	* NEWS: Update.
+--- a/Makefile.am	Mon Sep 14 17:40:46 2009 +0100
++++ b/Makefile.am	Tue Nov 03 17:50:20 2009 +0100
+@@ -626,6 +626,11 @@ ICEDTEA_PATCHES = \
+ 	patches/security/icedtea-6830335.patch \
+ 	patches/security/icedtea-6845701.patch \
+ 	patches/security/icedtea-6813167.patch \
++	patches/security/icedtea-6862968.patch \
++	patches/security/icedtea-6863503.patch \
++	patches/security/icedtea-6864911.patch \
++	patches/security/icedtea-6872357.patch \
++	patches/security/icedtea-6874643.patch \
+ 	patches/icedtea-jar-misc.patch
+ 
+ if WITH_ALT_HSBUILD
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/patches/security/icedtea-6862968.patch	Tue Nov 03 17:50:20 2009 +0100
+@@ -0,0 +1,60 @@
++--- old/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2009-07-29 13:28:11.272200000 +0400
+++++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2009-07-29 13:28:10.710600000 +0400
++@@ -685,6 +685,10 @@
++ #ifdef DEBUG
++     printf("in setQTables, qlen = %d, write is %d\n", qlen, write);
++ #endif
+++    if (qlen > NUM_QUANT_TBLS) {
+++        /* Ignore extra qunterization tables. */
+++        qlen = NUM_QUANT_TBLS;
+++    }
++     for (i = 0; i < qlen; i++) {
++         table = (*env)->GetObjectArrayElement(env, qtables, i);
++         qdata = (*env)->GetObjectField(env, table, JPEGQTable_tableID);
++@@ -736,6 +740,11 @@
++     hlensBody = (*env)->GetShortArrayElements(env,
++                                               huffLens,
++                                               NULL);
+++    if (hlensLen > 16) {
+++        /* Ignore extra elements of bits array. Only 16 elements can be
+++           stored. 0-th element is not used. (see jpeglib.h, line 107)  */
+++        hlensLen = 16;
+++    }
++     for (i = 1; i <= hlensLen; i++) {
++         huff_ptr->bits[i] = (UINT8)hlensBody[i-1];
++     }
++@@ -752,6 +761,11 @@
++                                               huffValues,
++                                               NULL);
++ 
+++    if (hvalsLen > 256) {
+++        /* Ignore extra elements of hufval array. Only 256 elements
+++           can be stored. (see jpeglib.h, line 109)                  */
+++        hlensLen = 256;
+++    }
++     for (i = 0; i < hvalsLen; i++) {
++         huff_ptr->huffval[i] = (UINT8)hvalsBody[i];
++     }
++@@ -772,6 +786,11 @@
++     j_compress_ptr comp;
++     j_decompress_ptr decomp;
++     jsize hlen = (*env)->GetArrayLength(env, DCHuffmanTables);
+++
+++    if (hlen > NUM_HUFF_TBLS) {
+++        /* Ignore extra DC huffman tables. */
+++        hlen = NUM_HUFF_TBLS;
+++    }
++     for (i = 0; i < hlen; i++) {
++         if (cinfo->is_decompressor) {
++             decomp = (j_decompress_ptr) cinfo;
++@@ -793,6 +812,10 @@
++         huff_ptr->sent_table = !write;
++     }
++     hlen = (*env)->GetArrayLength(env, ACHuffmanTables);
+++    if (hlen > NUM_HUFF_TBLS) {
+++        /* Ignore extra AC huffman tables. */
+++        hlen = NUM_HUFF_TBLS;
+++    }
++     for (i = 0; i < hlen; i++) {
++         if (cinfo->is_decompressor) {
++             decomp = (j_decompress_ptr) cinfo;
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/patches/security/icedtea-6863503.patch	Tue Nov 03 17:50:20 2009 +0100
+@@ -0,0 +1,33 @@
++--- old/src/share/classes/java/security/MessageDigest.java	Thu Sep 24 22:22:15 2009
+++++ openjdk/jdk/src/share/classes/java/security/MessageDigest.java	Thu Sep 24 22:22:15 2009
++@@ -1,5 +1,5 @@
++ /*
++- * Copyright 1996-2006 Sun Microsystems, Inc.  All Rights Reserved.
+++ * Copyright 1996-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
++@@ -414,16 +414,17 @@
++      *
++      * @return true if the digests are equal, false otherwise.
++      */
++-    public static boolean isEqual(byte digesta[], byte digestb[]) {
++-        if (digesta.length != digestb.length)
+++    public static boolean isEqual(byte[] digesta, byte[] digestb) {
+++        if (digesta.length != digestb.length) {
++             return false;
+++        }
++ 
+++        int result = 0;
+++        // time-constant comparison
++         for (int i = 0; i < digesta.length; i++) {
++-            if (digesta[i] != digestb[i]) {
++-                return false;
++-            }
+++            result |= digesta[i] ^ digestb[i];
++         }
++-        return true;
+++        return result == 0;
++     }
++ 
++     /**
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/patches/security/icedtea-6864911.patch	Tue Nov 03 17:50:20 2009 +0100
+@@ -0,0 +1,422 @@
++--- old/src/share/classes/com/sun/jndi/ldap/Connection.java	2009-08-18 09:35:56.595709900 +0800
+++++ openjdk/jdk/src/share/classes/com/sun/jndi/ldap/Connection.java	2009-08-18 09:35:56.087195700 +0800
++@@ -32,12 +32,8 @@
++ import java.io.OutputStream;
++ import java.io.InputStream;
++ import java.net.Socket;
++-import java.util.Vector;
++-import java.util.Hashtable;
++ 
++ import javax.naming.CommunicationException;
++-import javax.naming.AuthenticationException;
++-import javax.naming.AuthenticationNotSupportedException;
++ import javax.naming.ServiceUnavailableException;
++ import javax.naming.NamingException;
++ import javax.naming.InterruptedNamingException;
++@@ -47,6 +43,8 @@
++ import java.lang.reflect.Method;
++ import java.lang.reflect.Constructor;
++ import java.lang.reflect.InvocationTargetException;
+++import java.util.Arrays;
+++import sun.misc.IOUtils;
++ //import javax.net.SocketFactory;
++ 
++ /**
++@@ -799,7 +797,6 @@
++         byte inbuf[];   // Buffer for reading incoming bytes
++         int inMsgId;    // Message id of incoming response
++         int bytesread;  // Number of bytes in inbuf
++-        int bytesleft;  // Number of bytes that need to read for completing resp
++         int br;         // Temp; number of bytes read from stream
++         int offset;     // Offset of where to store bytes in inbuf
++         int seqlen;     // Length of ASN sequence
++@@ -811,7 +808,7 @@
++         try {
++             while (true) {
++                 try {
++-                    inbuf = new byte[2048];
+++                    inbuf = new byte[10];
++ 
++                     offset = 0;
++                     seqlen = 0;
++@@ -871,19 +868,10 @@
++                     }
++ 
++                     // read in seqlen bytes
++-                    bytesleft = seqlen;
++-                    if ((offset + bytesleft) > inbuf.length) {
++-                        byte nbuf[] = new byte[offset + bytesleft];
++-                        System.arraycopy(inbuf, 0, nbuf, 0, offset);
++-                        inbuf = nbuf;
++-                    }
++-                    while (bytesleft > 0) {
++-                        bytesread = in.read(inbuf, offset, bytesleft);
++-                        if (bytesread < 0)
++-                            break; // EOF
++-                        offset += bytesread;
++-                        bytesleft -= bytesread;
++-                    }
+++                    byte[] left = IOUtils.readFully(in, seqlen, false);
+++                    inbuf = Arrays.copyOf(inbuf, offset + left.length);
+++                    System.arraycopy(left, 0, inbuf, offset, left.length);
+++                    offset += left.length;
++ /*
++ if (dump > 0) {
++ System.err.println("seqlen: " + seqlen);
++--- old/src/share/classes/sun/applet/AppletClassLoader.java	2009-08-18 09:36:00.901075900 +0800
+++++ openjdk/jdk/src/share/classes/sun/applet/AppletClassLoader.java	2009-08-18 09:35:59.999916100 +0800
++@@ -51,6 +51,7 @@
++ import java.security.PermissionCollection;
++ import sun.awt.AppContext;
++ import sun.awt.SunToolkit;
+++import sun.misc.IOUtils;
++ import sun.net.www.ParseUtil;
++ import sun.security.util.SecurityConstants;
++ 
++@@ -314,36 +315,7 @@
++ 
++         byte[] b;
++         try {
++-            if (len != -1) {
++-                // Read exactly len bytes from the input stream
++-                b = new byte[len];
++-                while (len > 0) {
++-                    int n = in.read(b, b.length - len, len);
++-                    if (n == -1) {
++-                        throw new IOException("unexpected EOF");
++-                    }
++-                    len -= n;
++-                }
++-            } else {
++-                // Read until end of stream is reached - use 8K buffer
++-                // to speed up performance [stanleyh]
++-                b = new byte[8192];
++-                int total = 0;
++-                while ((len = in.read(b, total, b.length - total)) != -1) {
++-                    total += len;
++-                    if (total >= b.length) {
++-                        byte[] tmp = new byte[total * 2];
++-                        System.arraycopy(b, 0, tmp, 0, total);
++-                        b = tmp;
++-                    }
++-                }
++-                // Trim array to correct size, if necessary
++-                if (total != b.length) {
++-                    byte[] tmp = new byte[total];
++-                    System.arraycopy(b, 0, tmp, 0, total);
++-                    b = tmp;
++-                }
++-            }
+++            b = IOUtils.readFully(in, len, true);
++         } finally {
++             in.close();
++         }
++--- old/src/share/classes/sun/misc/Resource.java	2009-08-18 09:36:03.965921700 +0800
+++++ openjdk/jdk/src/share/classes/sun/misc/Resource.java	2009-08-18 09:36:03.449689900 +0800
++@@ -25,14 +25,15 @@
++ 
++ package sun.misc;
++ 
+++import java.io.EOFException;
++ import java.net.URL;
++ import java.io.IOException;
++ import java.io.InterruptedIOException;
++ import java.io.InputStream;
++ import java.security.CodeSigner;
++ import java.util.jar.Manifest;
++-import java.util.jar.Attributes;
++ import java.nio.ByteBuffer;
+++import java.util.Arrays;
++ import sun.nio.ByteBuffered;
++ 
++ /**
++@@ -105,49 +106,37 @@
++         }
++ 
++         try {
++-            if (len != -1) {
++-                // Read exactly len bytes from the input stream
++-                b = new byte[len];
++-                while (len > 0) {
++-                    int n = 0;
++-                    try {
++-                        n = in.read(b, b.length - len, len);
++-                    } catch (InterruptedIOException iioe) {
++-                        Thread.interrupted();
++-                        isInterrupted = true;
+++            b = new byte[0];
+++            if (len == -1) len = Integer.MAX_VALUE;
+++            int pos = 0;
+++            while (pos < len) {
+++                int bytesToRead;
+++                if (pos >= b.length) { // Only expand when there's no room
+++                    bytesToRead = Math.min(len - pos, b.length + 1024);
+++                    if (b.length < pos + bytesToRead) {
+++                        b = Arrays.copyOf(b, pos + bytesToRead);
++                     }
++-                    if (n == -1) {
++-                        throw new IOException("unexpected EOF");
++-                    }
++-                    len -= n;
+++                } else {
+++                    bytesToRead = b.length - pos;
++                 }
++-            } else {
++-                // Read until end of stream is reached
++-                b = new byte[1024];
++-                int total = 0;
++-                for (;;) {
++-                    len = 0;
++-                    try {
++-                        len = in.read(b, total, b.length - total);
++-                        if (len == -1)
++-                            break;
++-                    } catch (InterruptedIOException iioe) {
++-                        Thread.interrupted();
++-                        isInterrupted = true;
++-                    }
++-                    total += len;
++-                    if (total >= b.length) {
++-                        byte[] tmp = new byte[total * 2];
++-                        System.arraycopy(b, 0, tmp, 0, total);
++-                        b = tmp;
++-                    }
+++                int cc = 0;
+++                try {
+++                    cc = in.read(b, pos, bytesToRead);
+++                } catch (InterruptedIOException iioe) {
+++                    Thread.interrupted();
+++                    isInterrupted = true;
++                 }
++-                // Trim array to correct size, if necessary
++-                if (total != b.length) {
++-                    byte[] tmp = new byte[total];
++-                    System.arraycopy(b, 0, tmp, 0, total);
++-                    b = tmp;
+++                if (cc < 0) {
+++                    if (len != Integer.MAX_VALUE) {
+++                        throw new EOFException("Detect premature EOF");
+++                    } else {
+++                        if (b.length != pos) {
+++                            b = Arrays.copyOf(b, pos);
+++                        }
+++                        break;
+++                    }
++                 }
+++                pos += cc;
++             }
++         } finally {
++             try {
++--- old/src/share/classes/sun/reflect/misc/MethodUtil.java	2009-08-18 09:36:07.067128400 +0800
+++++ openjdk/jdk/src/share/classes/sun/reflect/misc/MethodUtil.java	2009-08-18 09:36:06.464179700 +0800
++@@ -44,6 +44,7 @@
++ import java.util.Collection;
++ import java.util.HashMap;
++ import java.util.Map;
+++import sun.misc.IOUtils;
++ import sun.net.www.ParseUtil;
++ import sun.security.util.SecurityConstants;
++ 
++@@ -375,34 +376,7 @@
++ 
++         byte[] b;
++         try {
++-            if (len != -1) {
++-                // Read exactly len bytes from the input stream
++-                b = new byte[len];
++-                while (len > 0) {
++-                    int n = in.read(b, b.length - len, len);
++-                    if (n == -1) {
++-                        throw new IOException("unexpected EOF");
++-                    }
++-                    len -= n;
++-                }
++-            } else {
++-                b = new byte[8192];
++-                int total = 0;
++-                while ((len = in.read(b, total, b.length - total)) != -1) {
++-                    total += len;
++-                    if (total >= b.length) {
++-                        byte[] tmp = new byte[total * 2];
++-                        System.arraycopy(b, 0, tmp, 0, total);
++-                        b = tmp;
++-                    }
++-                }
++-                // Trim array to correct size, if necessary
++-                if (total != b.length) {
++-                    byte[] tmp = new byte[total];
++-                    System.arraycopy(b, 0, tmp, 0, total);
++-                    b = tmp;
++-                }
++-            }
+++            b = IOUtils.readFully(in, len, true);
++         } finally {
++             in.close();
++         }
++--- old/src/share/classes/sun/security/provider/certpath/OCSPChecker.java	2009-08-18 09:36:10.684391400 +0800
+++++ openjdk/jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java	2009-08-18 09:36:10.088986300 +0800
++@@ -36,6 +36,7 @@
++ import java.net.*;
++ import javax.security.auth.x500.X500Principal;
++ 
+++import sun.misc.IOUtils;
++ import sun.security.util.*;
++ import sun.security.x509.*;
++ 
++@@ -344,17 +345,7 @@
++             in = con.getInputStream();
++ 
++             int contentLength = con.getContentLength();
++-            if (contentLength == -1) {
++-                contentLength = Integer.MAX_VALUE;
++-            }
++-
++-            byte[] response = new byte[contentLength];
++-            int total = 0;
++-            int count = 0;
++-            while (count != -1 && total < contentLength) {
++-                count = in.read(response, total, response.length - total);
++-                total += count;
++-            }
+++            byte[] response = IOUtils.readFully(in, contentLength, false);
++ 
++             OCSPResponse ocspResponse = new OCSPResponse(response, pkixParams,
++                 responderCert);
++--- old/src/share/classes/sun/security/timestamp/HttpTimestamper.java	2009-08-18 09:36:13.859436200 +0800
+++++ openjdk/jdk/src/share/classes/sun/security/timestamp/HttpTimestamper.java	2009-08-18 09:36:13.165978900 +0800
++@@ -33,6 +33,7 @@
++ import java.util.Iterator;
++ import java.util.Set;
++ 
+++import sun.misc.IOUtils;
++ import sun.security.pkcs.*;
++ 
++ /**
++@@ -138,19 +139,9 @@
++                 System.out.println();
++             }
++             int contentLength = connection.getContentLength();
++-            if (contentLength == -1) {
++-                contentLength = Integer.MAX_VALUE;
++-            }
++             verifyMimeType(connection.getContentType());
+++            replyBuffer = IOUtils.readFully(input, contentLength, false);
++ 
++-            replyBuffer = new byte[contentLength];
++-            int total = 0;
++-            int count = 0;
++-            while (count != -1 && total < contentLength) {
++-                count = input.read(replyBuffer, total,
++-                                        replyBuffer.length - total);
++-                total += count;
++-            }
++             if (DEBUG) {
++                 System.out.println("received timestamp response (length=" +
++                         replyBuffer.length + ")");
++--- old/src/share/classes/sun/security/util/DerValue.java	2009-08-18 09:36:18.392602400 +0800
+++++ openjdk/jdk/src/share/classes/sun/security/util/DerValue.java	2009-08-18 09:36:17.617711400 +0800
++@@ -28,6 +28,7 @@
++ import java.io.*;
++ import java.math.BigInteger;
++ import java.util.Date;
+++import sun.misc.IOUtils;
++ 
++ /**
++  * Represents a single DER-encoded value.  DER encoding rules are a subset
++@@ -384,12 +385,8 @@
++         if (fullyBuffered && in.available() != length)
++             throw new IOException("extra data given to DerValue constructor");
++ 
++-        byte[] bytes = new byte[length];
+++        byte[] bytes = IOUtils.readFully(in, length, true);
++ 
++-        // n.b. readFully not needed in normal fullyBuffered case
++-        DataInputStream dis = new DataInputStream(in);
++-
++-        dis.readFully(bytes);
++         buffer = new DerInputBuffer(bytes);
++         return new DerInputStream(buffer);
++     }
++--- /dev/null	2009-07-23 00:25:50.000000000 +0800
+++++ openjdk/jdk/src/share/classes/sun/misc/IOUtils.java	2009-08-18 09:36:21.385422200 +0800
++@@ -0,0 +1,80 @@
+++/*
+++ * Copyright 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
+++ * 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.
+++ */
+++
+++/**
+++ * IOUtils: A collection of IO-related public static methods.
+++ */
+++
+++package sun.misc;
+++
+++import java.io.EOFException;
+++import java.io.IOException;
+++import java.io.InputStream;
+++import java.util.Arrays;
+++
+++public class IOUtils {
+++
+++    /**
+++     * Read up to <code>length</code> of bytes from <code>in</code>
+++     * until EOF is detected.
+++     * @param in input stream, must not be null
+++     * @param length number of bytes to read, -1 or Integer.MAX_VALUE means
+++     *        read as much as possible
+++     * @param readAll if true, an EOFException will be thrown if not enough
+++     *        bytes are read. Ignored when length is -1 or Integer.MAX_VALUE
+++     * @return bytes read
+++     * @throws IOException Any IO error or a premature EOF is detected
+++     */
+++    public static byte[] readFully(InputStream is, int length, boolean readAll)
+++            throws IOException {
+++        byte[] output = {};
+++        if (length == -1) length = Integer.MAX_VALUE;
+++        int pos = 0;
+++        while (pos < length) {
+++            int bytesToRead;
+++            if (pos >= output.length) { // Only expand when there's no room
+++                bytesToRead = Math.min(length - pos, output.length + 1024);
+++                if (output.length < pos + bytesToRead) {
+++                    output = Arrays.copyOf(output, pos + bytesToRead);
+++                }
+++            } else {
+++                bytesToRead = output.length - pos;
+++            }
+++            int cc = is.read(output, pos, bytesToRead);
+++            if (cc < 0) {
+++                if (readAll && length != Integer.MAX_VALUE) {
+++                    throw new EOFException("Detect premature EOF");
+++                } else {
+++                    if (output.length != pos) {
+++                        output = Arrays.copyOf(output, pos);
+++                    }
+++                    break;
+++                }
+++            }
+++            pos += cc;
+++        }
+++        return output;
+++    }
+++}
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/patches/security/icedtea-6872357.patch	Tue Nov 03 17:50:20 2009 +0100
+@@ -0,0 +1,17 @@
++--- old/src/share/native/sun/awt/image/awt_ImageRep.c	Mon Sep  7 14:46:10 2009
+++++ openjdk/jdk/src/share/native/sun/awt/image/awt_ImageRep.c	Mon Sep  7 14:46:09 2009
++@@ -266,6 +266,14 @@
++     jnewlut = (*env)->GetObjectField(env, jicm, g_ICMrgbID);
++     mapSize = (*env)->GetIntField(env, jicm, g_ICMmapSizeID);
++ 
+++    if (numLut < 0 || numLut > 256 || mapSize < 0 || mapSize > 256) {
+++        /* Ether old or new ICM has a palette that exceeds capacity 
+++           of byte data type, so we have to convert the image data
+++           to default representation.
+++        */
+++        return 0;
+++    }
+++
++     srcLUT = (unsigned int *) (*env)->GetPrimitiveArrayCritical(env, jlut,
++                                                                 NULL);
++     if (srcLUT == NULL) {
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/patches/security/icedtea-6874643.patch	Tue Nov 03 17:50:20 2009 +0100
+@@ -0,0 +1,16 @@
++--- old/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	Mon Sep  7 13:25:13 2009
+++++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	Mon Sep  7 13:25:12 2009
++@@ -1837,6 +1837,13 @@
++         return JNI_FALSE;
++     }
++ 
+++    if (stepX > cinfo->image_width) {
+++        stepX = cinfo->image_width;
+++    }
+++    if (stepY > cinfo->image_height) {
+++        stepY = cinfo->image_height;
+++    }
+++
++     /*
++      * First get the source bands array and copy it to our local array
++      * so we don't have to worry about pinning and unpinning it again.
+




More information about the arch-commits mailing list