Author: bodewig
Date: Tue Aug 16 04:04:07 2011
New Revision: 1158101

URL: http://svn.apache.org/viewvc?rev=1158101&view=rev
Log:
address issues detected by findbugs

Modified:
    commons/proper/compress/trunk/findbugs-exclude-filter.xml
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveEntry.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveSummary.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java

Modified: commons/proper/compress/trunk/findbugs-exclude-filter.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/findbugs-exclude-filter.xml?rev=1158101&r1=1158100&r2=1158101&view=diff
==============================================================================
--- commons/proper/compress/trunk/findbugs-exclude-filter.xml (original)
+++ commons/proper/compress/trunk/findbugs-exclude-filter.xml Tue Aug 16 
04:04:07 2011
@@ -37,6 +37,11 @@
     <Method name="finalize" />
     <Bug pattern="NP_ALWAYS_NULL" />
   </Match>
+  <Match>
+    <Class name="org.apache.commons.compress.archivers.dump.DumpArchiveUtil" />
+    <Method name="dumpBlock" />
+    <Bug pattern="NP_ALWAYS_NULL" />
+  </Match>
 
   <!-- Reason: fallthrough is intended -->
   <Match>
@@ -54,6 +59,11 @@
     </Or>
     <Bug pattern="UWF_NULL_FIELD" />
   </Match>
+  <Match>
+    <Class name="org.apache.commons.compress.archivers.dump.DumpArchiveEntry" 
/>
+    <Field name="summary"/>
+    <Bug pattern="UWF_NULL_FIELD" />
+  </Match>
 
   <!-- Reason: exception in close swallowed in order to re-throw original -->
   <Match>

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveEntry.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveEntry.java?rev=1158101&r1=1158100&r2=1158101&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveEntry.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveEntry.java
 Tue Aug 16 04:04:07 2011
@@ -182,11 +182,14 @@ public class DumpArchiveEntry implements
     private int mode;
     private Set<PERMISSION> permissions = Collections.emptySet();
     private long size;
-    private Date atime;
-    private Date mtime;
+    private long atime;
+    private long mtime;
     private int uid;
     private int gid;
 
+    /**
+     * Currently unused
+     */
     private DumpArchiveSummary summary = null;
 
     // this information is available from standard index.
@@ -198,7 +201,7 @@ public class DumpArchiveEntry implements
     private long offset;
     private int ino;
     private int nlink;
-    private Date ctime;
+    private long ctime;
     private int generation;
     private boolean isDeleted;
 
@@ -280,14 +283,14 @@ public class DumpArchiveEntry implements
      * Get file creation time.
      */
     public Date getCreationTime() {
-        return ctime;
+        return new Date(ctime);
     }
 
     /**
      * Set the file creation time.
      */
     public void setCreationTime(Date ctime) {
-        this.ctime = ctime;
+        this.ctime = ctime.getTime();
     }
 
     /**
@@ -389,7 +392,7 @@ public class DumpArchiveEntry implements
     public boolean equals(Object o) {
         if (o == this) {
             return true;
-        } else if (!o.getClass().equals(getClass())) {
+        } else if (o == null || !o.getClass().equals(getClass())) {
             return false;
         }
 
@@ -403,7 +406,8 @@ public class DumpArchiveEntry implements
             return false;
         }
 
-        if ((summary != null) || summary.equals(rhs.summary)) {
+        if ((summary == null && rhs.summary != null)
+            || (summary != null && !summary.equals(rhs.summary))) {
             return false;
         }
 
@@ -461,7 +465,7 @@ public class DumpArchiveEntry implements
         entry.setLastModifiedDate(new Date(t));
         t = (1000L * DumpArchiveUtil.convert32(buffer, 64)) +
             (DumpArchiveUtil.convert32(buffer, 68) / 1000);
-        entry.ctime = new Date(t);
+        entry.ctime = t;
 
         // db: 72-119 - direct blocks
         // id: 120-131 - indirect blocks
@@ -565,7 +569,7 @@ public class DumpArchiveEntry implements
 
     /** {@inheritDoc} */
     public Date getLastModifiedDate() {
-        return mtime;
+        return new Date(mtime);
     }
 
     /**
@@ -664,21 +668,21 @@ public class DumpArchiveEntry implements
      * Set the time the file was last modified.
      */
     public void setLastModifiedDate(Date mtime) {
-        this.mtime = mtime;
+        this.mtime = mtime.getTime();
     }
 
     /**
      * Returns the time the file was last accessed.
      */
     public Date getAccessTime() {
-        return atime;
+        return new Date(atime);
     }
 
     /**
      * Set the time the file was last accessed.
      */
     public void setAccessTime(Date atime) {
-        this.atime = atime;
+        this.atime = atime.getTime();
     }
 
     /**

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java?rev=1158101&r1=1158100&r2=1158101&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveInputStream.java
 Tue Aug 16 04:04:07 2011
@@ -21,6 +21,7 @@ package org.apache.commons.compress.arch
 import org.apache.commons.compress.archivers.ArchiveException;
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 
+import java.io.EOFException;
 import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -141,7 +142,10 @@ public class DumpArchiveInputStream exte
         }
 
         // we don't do anything with this yet.
-        raw.skip(DumpArchiveConstants.TP_SIZE * active.getHeaderCount());
+        if (raw.skip(DumpArchiveConstants.TP_SIZE * active.getHeaderCount())
+            == -1) {
+            throw new EOFException();
+        }
         readIdx = active.getHeaderCount();
     }
 
@@ -162,7 +166,10 @@ public class DumpArchiveInputStream exte
         }
 
         // we don't do anything with this yet.
-        raw.skip(DumpArchiveConstants.TP_SIZE * active.getHeaderCount());
+        if (raw.skip(DumpArchiveConstants.TP_SIZE * active.getHeaderCount())
+            == -1) {
+            throw new EOFException();
+        }
         readIdx = active.getHeaderCount();
     }
 
@@ -189,8 +196,9 @@ public class DumpArchiveInputStream exte
             // block by block. We may want to revisit this if
             // the unnecessary decompression time adds up.
             while (readIdx < active.getHeaderCount()) {
-                if (!active.isSparseRecord(readIdx++)) {
-                    raw.skip(DumpArchiveConstants.TP_SIZE);
+                if (!active.isSparseRecord(readIdx++)
+                    && raw.skip(DumpArchiveConstants.TP_SIZE) == -1) {
+                    throw new EOFException();
                 }
             }
 
@@ -207,8 +215,11 @@ public class DumpArchiveInputStream exte
 
             // skip any remaining segments for prior file.
             while (DumpArchiveConstants.SEGMENT_TYPE.ADDR == 
active.getHeaderType()) {
-                raw.skip(DumpArchiveConstants.TP_SIZE * 
(active.getHeaderCount() -
-                    active.getHeaderHoles()));
+                if (raw.skip(DumpArchiveConstants.TP_SIZE
+                             * (active.getHeaderCount()
+                                - active.getHeaderHoles())) == -1) {
+                    throw new EOFException();
+                }
 
                 filepos = raw.getBytesRead();
                 headerBytes = raw.readRecord();
@@ -287,7 +298,9 @@ public class DumpArchiveInputStream exte
                 blockBuffer = new byte[datalen];
             }
 
-            raw.read(blockBuffer, 0, datalen);
+            if (raw.read(blockBuffer, 0, datalen) != datalen) {
+                throw new EOFException();
+            }
 
             int reclen = 0;
 
@@ -445,7 +458,10 @@ outer: 
                 }
 
                 if (!active.isSparseRecord(readIdx++)) {
-                    raw.read(readBuf, 0, readBuf.length);
+                    int r = raw.read(readBuf, 0, readBuf.length);
+                    if (r != readBuf.length) {
+                        throw new EOFException();
+                    }
                 } else {
                     Arrays.fill(readBuf, (byte) 0);
                 }

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveSummary.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveSummary.java?rev=1158101&r1=1158100&r2=1158101&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveSummary.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/DumpArchiveSummary.java
 Tue Aug 16 04:04:07 2011
@@ -29,8 +29,8 @@ import java.util.Date;
  * For the corresponding C structure see the header of {@link 
DumpArchiveEntry}.
  */
 public class DumpArchiveSummary {
-    private Date dumpDate;
-    private Date previousDumpDate;
+    private long dumpDate;
+    private long previousDumpDate;
     private int volume;
     private String label;
     private int level;
@@ -42,8 +42,8 @@ public class DumpArchiveSummary {
     private int ntrec;
 
     DumpArchiveSummary(byte[] buffer) {
-        dumpDate = new Date(1000L * DumpArchiveUtil.convert32(buffer, 4));
-        previousDumpDate = new Date(1000L * DumpArchiveUtil.convert32(buffer, 
8));
+        dumpDate = 1000L * DumpArchiveUtil.convert32(buffer, 4);
+        previousDumpDate = 1000L * DumpArchiveUtil.convert32(buffer, 8);
         volume = DumpArchiveUtil.convert32(buffer, 12);
         label = new String(buffer, 676, DumpArchiveConstants.LBLSIZE).trim();
         level = DumpArchiveUtil.convert32(buffer, 692);
@@ -62,14 +62,14 @@ public class DumpArchiveSummary {
      * @return the date of this dump.
      */
     public Date getDumpDate() {
-        return dumpDate;
+        return new Date(dumpDate);
     }
 
     /**
      * Set dump date.
      */
     public void setDumpDate(Date dumpDate) {
-        this.dumpDate = dumpDate;
+        this.dumpDate = dumpDate.getTime();
     }
 
     /**
@@ -77,14 +77,14 @@ public class DumpArchiveSummary {
      * @return dumpdate may be null
      */
     public Date getPreviousDumpDate() {
-        return previousDumpDate;
+        return new Date(previousDumpDate);
     }
 
     /**
      * Set previous dump date.
      */
     public void setPreviousDumpDate(Date previousDumpDate) {
-        this.previousDumpDate = previousDumpDate;
+        this.previousDumpDate = previousDumpDate.getTime();
     }
 
     /**
@@ -287,9 +287,7 @@ public class DumpArchiveSummary {
             hash = label.hashCode();
         }
 
-        if (dumpDate != null) {
-            hash = (31 * dumpDate.hashCode()) + 17;
-        }
+        hash += 31 * dumpDate;
 
         if (hostname != null) {
             hash = (31 * hostname.hashCode()) + 17;
@@ -311,13 +309,13 @@ public class DumpArchiveSummary {
             return true;
         }
 
-        if (!o.getClass().equals(getClass())) {
+        if (o == null || !o.getClass().equals(getClass())) {
             return false;
         }
 
         DumpArchiveSummary rhs = (DumpArchiveSummary) o;
 
-        if ((dumpDate == null) || !dumpDate.equals(rhs.dumpDate)) {
+        if (dumpDate != rhs.dumpDate) {
             return false;
         }
 

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java?rev=1158101&r1=1158100&r2=1158101&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/dump/TapeInputStream.java
 Tue Aug 16 04:04:07 2011
@@ -104,7 +104,12 @@ class TapeInputStream extends FilterInpu
     }
 
     /**
-     * @see java.io.InputStream#read(byte[], int, int)
+     * {@inheritDoc}
+     *
+     * <p>reads the full given length unless EOF is reached.</p> 
+     *
+     * @param len length to read, must be a multiple of the stream's
+     * record size
      */
     @Override
     public int read(byte[] b, int off, int len) throws IOException {
@@ -146,7 +151,11 @@ class TapeInputStream extends FilterInpu
 
     /**
      * Skip bytes. Same as read but without the arraycopy.
-     * @see java.io.InputStream#read(byte[], int, int)
+     *
+     * <p>skips the full given length unless EOF is reached.</p> 
+     *
+     * @param len length to read, must be a multiple of the stream's
+     * record size
      */
     @Override
     public long skip(long len) throws IOException {
@@ -254,7 +263,9 @@ class TapeInputStream extends FilterInpu
             success = readFully(blockBuffer, 0, blockSize);
             bytesRead += blockSize;
         } else {
-            in.read(blockBuffer, 0, 4);
+            if (!readFully(blockBuffer, 0, 4)) {
+                return false;
+            }
             bytesRead += 4;
 
             int h = DumpArchiveUtil.convert32(blockBuffer, 0);


Reply via email to