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.