You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2008/09/19 17:53:21 UTC

svn commit: r697139 - in /ant/core/trunk: WHATSNEW src/etc/testcases/taskdefs/signjar.xml src/etc/testcases/testkeystore src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java

Author: bodewig
Date: Fri Sep 19 08:53:20 2008
New Revision: 697139

URL: http://svn.apache.org/viewvc?rev=697139&view=rev
Log:
properly handle non-standard chars in key alias.  PR 45820.

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/etc/testcases/taskdefs/signjar.xml
    ant/core/trunk/src/etc/testcases/testkeystore
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java
    ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=697139&r1=697138&r2=697139&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Fri Sep 19 08:53:20 2008
@@ -222,6 +222,10 @@
    regardless of their configuration.
    Bugzilla Report 37970.
 
+ * <signjar> and <issigned> didn't handle aliases with characters other
+   than numbers, letters, hyphen or underscore properly.
+   Bugzilla Report 45820.
+
 Other changes:
 --------------
 

Modified: ant/core/trunk/src/etc/testcases/taskdefs/signjar.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/taskdefs/signjar.xml?rev=697139&r1=697138&r2=697139&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/signjar.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/signjar.xml Fri Sep 19 08:53:20 2008
@@ -80,6 +80,11 @@
     <assertSigned/>             
   </target>
 
+  <target name="invalidchars" depends="jar">
+    <sign alias="test@nly"/>
+    <assertSigned/>             
+  </target>
+
   <target name="maxmemory" depends="jar">
     <sign maxmemory="128m"/>
     <assertSigned/>             

Modified: ant/core/trunk/src/etc/testcases/testkeystore
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/testkeystore?rev=697139&r1=697138&r2=697139&view=diff
==============================================================================
Binary files - no diff available.

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java?rev=697139&r1=697138&r2=697139&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java Fri Sep 19 08:53:20 2008
@@ -23,6 +23,7 @@
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.ManifestTask;
 import org.apache.tools.ant.types.DataType;
 import org.apache.tools.zip.ZipEntry;
 import org.apache.tools.zip.ZipFile;
@@ -84,6 +85,7 @@
                 }
                 return false;
             }
+            name = replaceInvalidChars(name);
             boolean shortSig = jarFile.getEntry(SIG_START
                         + name.toUpperCase()
                         + SIG_END) != null;
@@ -131,4 +133,20 @@
         }
         return r;
     }
+
+    private static String replaceInvalidChars(final String name) {
+        StringBuffer sb = new StringBuffer();
+        final int len = name.length();
+        boolean changes = false;
+        for (int i = 0; i < len; i++) {
+            final char ch = name.charAt(i);
+            if (ManifestTask.VALID_ATTRIBUTE_CHARS.indexOf(ch) < 0) {
+                sb.append("_");
+                changes = true;
+            } else {
+                sb.append(ch);
+            }
+        }
+        return changes ? sb.toString() : name;
+    }
 }

Modified: ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java?rev=697139&r1=697138&r2=697139&view=diff
==============================================================================
--- ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java (original)
+++ ant/core/trunk/src/tests/junit/org/apache/tools/ant/taskdefs/SignJarTest.java Fri Sep 19 08:53:20 2008
@@ -70,6 +70,17 @@
                    sj.isSigned());
     }
 
+    public void testInvalidChars() {
+        executeTarget("invalidchars");
+        SignJarChild sj = new SignJarChild();
+        sj.setAlias("test@nly");
+        sj.setKeystore("testkeystore");
+        sj.setStorepass("apacheant");
+        File jar = new File(getProject().getProperty("test.jar"));
+        sj.setJar(jar);
+        assertTrue(sj.isSigned());
+    }
+
     /**
      * subclass in order to get access to protected isSigned method if
      * tests and task come from different classloaders.