You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@apache.org on 2003/08/06 17:15:27 UTC
cvs commit: ant/src/main/org/apache/tools/tar TarInputStream.java
conor 2003/08/06 08:15:27
Modified: src/main/org/apache/tools/tar TarInputStream.java
Added: src/testcases/org/apache/tools/tar TarRoundTripTest.java
Log:
Fix extraction of long file names in Tar
PR: 15230
Submitted by: J. David Beutel
Revision Changes Path
1.1 ant/src/testcases/org/apache/tools/tar/TarRoundTripTest.java
Index: TarRoundTripTest.java
===================================================================
package org.apache.tools.tar;
import java.io.IOException;
import java.io.ByteArrayOutputStream;
import junit.framework.TestCase;
public class TarRoundTripTest extends TestCase {
private static final String LONG_NAME
= "this/path/name/contains/more/than/one/hundred/characters/in/order/"
+ "to/test/the/GNU/long/file/name/capability/round/tripped";
public TarRoundTripTest(String name) {
super(name);
}
/**
* test round-tripping long (GNU) entries
*/
public void testLongRoundTripping() throws IOException {
TarEntry original = new TarEntry(LONG_NAME);
assertEquals("over 100 chars", true, LONG_NAME.length() > 100);
assertEquals("original name", LONG_NAME, original.getName());
ByteArrayOutputStream buff = new ByteArrayOutputStream();
TarOutputStream tos = new TarOutputStream(buff);
tos.setLongFileMode(TarOutputStream.LONGFILE_GNU);
tos.putNextEntry(original);
tos.closeEntry();
tos.close();
TarInputStream tis
= new TarInputStream(new ByteArrayInputStream(buff.toByteArray()));
TarEntry tripped = tis.getNextEntry();
assertEquals("round-tripped name", LONG_NAME, tripped.getName());
assertNull("no more entries", tis.getNextEntry());
tis.close();
}
}
1.11 +6 -0 ant/src/main/org/apache/tools/tar/TarInputStream.java
Index: TarInputStream.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/tar/TarInputStream.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -w -u -r1.10 -r1.11
--- TarInputStream.java 19 Jul 2003 11:20:23 -0000 1.10
+++ TarInputStream.java 6 Aug 2003 15:15:27 -0000 1.11
@@ -275,6 +275,12 @@
longName.append(new String(buffer, 0, length));
}
getNextEntry();
+
+ // remove trailing null terminator
+ if (longName.length() > 0
+ && longName.charAt(longName.length() - 1) == 0) {
+ longName.deleteCharAt(longName.length() - 1);
+ }
this.currEntry.setName(longName.toString());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org