Merge
authorasaha
Thu, 18 Jun 2009 22:53:54 -0700
changeset 3460 9ffe320f9bf0
parent 3459 132a6fa31148 (current diff)
parent 3049 eb3d33c3771c (diff)
child 3461 cbc3dfc3b609
Merge
--- a/jdk/src/share/classes/sun/security/tools/JarSigner.java	Thu Jun 18 22:45:16 2009 -0700
+++ b/jdk/src/share/classes/sun/security/tools/JarSigner.java	Thu Jun 18 22:53:54 2009 -0700
@@ -1402,9 +1402,14 @@
     }
 
     /**
-     * Find the position of \r\n\r\n inside bs
+     * Find the position of an empty line inside bs
      */
     private int findHeaderEnd(byte[] bs) {
+        // An empty line can be at the beginning...
+        if (bs.length > 1 && bs[0] == '\r' && bs[1] == '\n') {
+            return 0;
+        }
+        // ... or after another line
         for (int i=0; i<bs.length-3; i++) {
             if (bs[i] == '\r' && bs[i+1] == '\n' &&
                     bs[i+2] == '\r' && bs[i+3] == '\n') {
--- a/jdk/src/share/classes/sun/security/util/ManifestDigester.java	Thu Jun 18 22:45:16 2009 -0700
+++ b/jdk/src/share/classes/sun/security/util/ManifestDigester.java	Thu Jun 18 22:53:54 2009 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1997-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
@@ -129,7 +129,7 @@
 
             if (len > 6) {
                 if (isNameAttr(bytes, start)) {
-                    StringBuilder nameBuf = new StringBuilder();
+                    StringBuilder nameBuf = new StringBuilder(sectionLen);
 
                     try {
                         nameBuf.append(
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/tools/jarsigner/emptymanifest.sh	Thu Jun 18 22:53:54 2009 -0700
@@ -0,0 +1,66 @@
+#
+# 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.
+#
+# 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.
+#
+
+# @test
+# @bug 6712755
+# @summary jarsigner fails to sign itextasian.jar since 1.5.0_b14, it works with 1.5.0_13
+#
+# @run shell emptymanifest.sh
+#
+
+if [ "${TESTJAVA}" = "" ] ; then
+  JAVAC_CMD=`which javac`
+  TESTJAVA=`dirname $JAVAC_CMD`/..
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+  Windows_* )
+    FS="\\"
+    ;;
+  * )
+    FS="/"
+    ;;
+esac
+
+KS=emptymanifest.jks
+JFILE=em.jar
+
+KT="$TESTJAVA${FS}bin${FS}keytool -storepass changeit -keypass changeit -keystore $KS"
+JAR=$TESTJAVA${FS}bin${FS}jar
+JARSIGNER=$TESTJAVA${FS}bin${FS}jarsigner
+
+rm $KS $JFILE
+echo A > A
+echo B > B
+mkdir META-INF
+printf "\r\n" > META-INF${FS}MANIFEST.MF
+zip $JFILE META-INF${FS}MANIFEST.MF A B
+
+$KT -alias a -dname CN=a -keyalg rsa -genkey -validity 300
+
+$JARSIGNER -keystore $KS -storepass changeit $JFILE a || exit 1
+$JARSIGNER -keystore $KS -verify -debug -strict $JFILE || exit 2
+
+exit 0