]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
When Skipping data in a store mode, use rar->bytes_remaining instead of rar->packed_size.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 3 Aug 2011 10:28:52 +0000 (06:28 -0400)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 3 Aug 2011 10:28:52 +0000 (06:28 -0400)
a use of packed_size in that case will not work after archive_read_format_rar_read_data
has been called.

SVN-Revision: 3528

libarchive/archive_read_support_format_rar.c

index ad97c8c09540513080b47e6c74c479891872f5d0..4e46a0fddcadd9a735f394a3df998f1aa64bede0 100644 (file)
@@ -566,9 +566,11 @@ archive_read_format_rar_read_data_skip(struct archive_read *a)
   case COMPRESS_METHOD_GOOD:
   case COMPRESS_METHOD_BEST:
   default:
-    bytes_skipped = __archive_read_consume(a, rar->packed_size);
-    if (bytes_skipped < 0)
-      return (ARCHIVE_FATAL);
+    if (rar->bytes_remaining > 0) {
+      bytes_skipped = __archive_read_consume(a, rar->bytes_remaining);
+      if (bytes_skipped < 0)
+        return (ARCHIVE_FATAL);
+    }
   }
   return (ARCHIVE_OK);
 }