COMPRESS-245 TarArchiveInputStream might fail to read a stream if a single call to read() returns less than a full record

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/compress/trunk@1548380 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7beddd5..a04a8dd 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -52,6 +52,9 @@
               due-to="Nico Kruber">
         7z reading of big 64bit values could be wrong.
       </action> 
+      <action issue="COMPRESS-245" type="fix" date="2013-12-06">
+        TarArchiveInputStream could fail to read an archive completely.
+      </action> 
     </release>
     <release version="1.6" date="2013-10-26"
              description="Release 1.6">
diff --git a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
index 8e66570..55cadf7 100644
--- a/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
@@ -385,7 +385,7 @@
 
         byte[] record = new byte[recordSize];
 
-        int readNow = is.read(record);
+        int readNow = IOUtils.readFully(is, record);
         count(readNow);
         if (readNow != recordSize) {
             return null;