You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2014/04/18 16:13:45 UTC

svn commit: r1588476 - in /commons/proper/compress/trunk/src: changes/ main/java/org/apache/commons/compress/archivers/cpio/ main/java/org/apache/commons/compress/archivers/zip/

Author: bodewig
Date: Fri Apr 18 14:13:44 2014
New Revision: 1588476

URL: http://svn.apache.org/r1588476
Log:
COMPRESS-273 sprinkle in a few null checks

Modified:
    commons/proper/compress/trunk/src/changes/changes.xml
    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/zip/AbstractUnicodeExtraField.java
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java

Modified: commons/proper/compress/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/changes/changes.xml?rev=1588476&r1=1588475&r2=1588476&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/changes/changes.xml (original)
+++ commons/proper/compress/trunk/src/changes/changes.xml Fri Apr 18 14:13:44 2014
@@ -71,6 +71,9 @@ The <action> type attribute can be add,u
         ChangeSet#delete and deleteDir now properly deal with unnamed
         entries.
       </action>
+      <action type="fix" date="2014-04-13" issue="COMPRESS-273">
+        Added a few null checks to improve robustness.
+      </action>
     </release>
     <release version="1.8" date="2014-03-12"
              description="Release 1.8">

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=1588476&r1=1588475&r2=1588476&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 Fri Apr 18 14:13:44 2014
@@ -469,7 +469,10 @@ public class CpioArchiveEntry implements
      */
     public int getHeaderPadCount(){
         if (this.alignmentBoundary == 0) { return 0; }
-        int size = this.headerSize+this.name.length()+1; // Name has terminating null
+        int size = this.headerSize + 1;  // Name has terminating null
+        if (name != null) {
+            size += name.length();
+        }
         int remain = size % this.alignmentBoundary;
         if (remain > 0){
             return this.alignmentBoundary - remain;

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/AbstractUnicodeExtraField.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/AbstractUnicodeExtraField.java?rev=1588476&r1=1588475&r2=1588476&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/AbstractUnicodeExtraField.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/AbstractUnicodeExtraField.java Fri Apr 18 14:13:44 2014
@@ -143,7 +143,7 @@ public abstract class AbstractUnicodeExt
         if (data == null) {
             assembleData();
         }
-        return new ZipShort(data.length);
+        return new ZipShort(data != null ? data.length : 0);
     }
 
     public byte[] getLocalFileDataData() {

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java?rev=1588476&r1=1588475&r2=1588476&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ExtraFieldUtils.java Fri Apr 18 14:13:44 2014
@@ -210,13 +210,18 @@ public class ExtraFieldUtils {
                              0, result, start, 2);
             System.arraycopy(data[i].getLocalFileDataLength().getBytes(),
                              0, result, start + 2, 2);
+            start += WORD;
             byte[] local = data[i].getLocalFileDataData();
-            System.arraycopy(local, 0, result, start + WORD, local.length);
-            start += local.length + WORD;
+            if (local != null) {
+                System.arraycopy(local, 0, result, start, local.length);
+                start += local.length;
+            }
         }
         if (lastIsUnparseableHolder) {
             byte[] local = data[data.length - 1].getLocalFileDataData();
-            System.arraycopy(local, 0, result, start, local.length);
+            if (local != null) {
+                System.arraycopy(local, 0, result, start, local.length);
+            }
         }
         return result;
     }
@@ -243,13 +248,18 @@ public class ExtraFieldUtils {
                              0, result, start, 2);
             System.arraycopy(data[i].getCentralDirectoryLength().getBytes(),
                              0, result, start + 2, 2);
+            start += WORD;
             byte[] local = data[i].getCentralDirectoryData();
-            System.arraycopy(local, 0, result, start + WORD, local.length);
-            start += local.length + WORD;
+            if (local != null) {
+                System.arraycopy(local, 0, result, start, local.length);
+                start += local.length;
+            }
         }
         if (lastIsUnparseableHolder) {
             byte[] local = data[data.length - 1].getCentralDirectoryData();
-            System.arraycopy(local, 0, result, start, local.length);
+            if (local != null) {
+                System.arraycopy(local, 0, result, start, local.length);
+            }
         }
         return result;
     }

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java?rev=1588476&r1=1588475&r2=1588476&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/UnrecognizedExtraField.java Fri Apr 18 14:13:44 2014
@@ -69,7 +69,7 @@ public class UnrecognizedExtraField impl
      * @return the length of the local data
      */
     public ZipShort getLocalFileDataLength() {
-        return new ZipShort(localData.length);
+        return new ZipShort(localData != null ? localData.length : 0);
     }
 
     /**