You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2009/03/28 20:33:56 UTC
svn commit: r759561 - in
/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio:
CpioArchiveEntry.java CpioArchiveInputStream.java
Author: sebb
Date: Sat Mar 28 19:33:56 2009
New Revision: 759561
URL: http://svn.apache.org/viewvc?rev=759561&view=rev
Log:
Mode will be zero for trailers in old format cpio archives too.
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java?rev=759561&r1=759560&r2=759561&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java Sat Mar 28 19:33:56 2009
@@ -135,6 +135,9 @@
* <p>The MAGIC numbers and other constants are defined in {@link CpioConstants}
* @see "http://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt"
*
+ * <p>
+ * N.B. does not handle the cpio "tar" format
+ * </p>
* @NotThreadSafe
*/
public class CpioArchiveEntry implements CpioConstants, ArchiveEntry {
Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java?rev=759561&r1=759560&r2=759561&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java Sat Mar 28 19:33:56 2009
@@ -348,7 +348,10 @@
ret.setDevice(readAsciiLong(6, 8));
ret.setInode(readAsciiLong(6, 8));
- ret.setMode(readAsciiLong(6, 8));
+ final long mode = readAsciiLong(6, 8);
+ if (mode != 0) {
+ ret.setMode(mode);
+ }
ret.setUID(readAsciiLong(6, 8));
ret.setGID(readAsciiLong(6, 8));
ret.setNumberOfLinks(readAsciiLong(6, 8));
@@ -356,7 +359,12 @@
ret.setTime(readAsciiLong(11, 8));
long namesize = readAsciiLong(6, 8);
ret.setSize(readAsciiLong(11, 8));
- ret.setName(readCString((int) namesize));
+ final String name = readCString((int) namesize);
+ ret.setName(name);
+ if (mode == 0 && !name.equals(CPIO_TRAILER)){
+ // TODO - change this to throw
+ new IOException("Mode 0 only allowed in the trailer. Found: "+name).printStackTrace();
+ }
return ret;
}
@@ -367,7 +375,10 @@
ret.setDevice(readBinaryLong(2, swapHalfWord));
ret.setInode(readBinaryLong(2, swapHalfWord));
- ret.setMode(readBinaryLong(2, swapHalfWord));
+ final long mode = readBinaryLong(2, swapHalfWord);
+ if (mode != 0){
+ ret.setMode(mode);
+ }
ret.setUID(readBinaryLong(2, swapHalfWord));
ret.setGID(readBinaryLong(2, swapHalfWord));
ret.setNumberOfLinks(readBinaryLong(2, swapHalfWord));
@@ -375,7 +386,12 @@
ret.setTime(readBinaryLong(4, swapHalfWord));
long namesize = readBinaryLong(2, swapHalfWord);
ret.setSize(readBinaryLong(4, swapHalfWord));
- ret.setName(readCString((int) namesize));
+ final String name = readCString((int) namesize);
+ ret.setName(name);
+ if (mode == 0 && !name.equals(CPIO_TRAILER)){
+ // TODO - change this to throw
+ new IOException("Mode 0 only allowed in the trailer. Found: "+name).printStackTrace();
+ }
skip(ret.getHeaderPadCount());
return ret;