File unzip60-total_disks_zero.patch of Package unzip.9128

Index: unzip60/process.c
===================================================================
--- unzip60.orig/process.c
+++ unzip60/process.c
@@ -1286,7 +1286,8 @@ static int find_ecrec64(__G__ searchlen)
             G.ecrec.number_this_disk, ecloc64_total_disks); fflush(stdout);
 #endif
     if ((G.ecrec.number_this_disk != 0xFFFF) &&
-        (G.ecrec.number_this_disk != ecloc64_total_disks - 1)) {
+        (G.ecrec.number_this_disk != ecloc64_total_disks - 1) &&
+        (ecloc64_total_disks != 0)) {
       /* Note: For some unknown reason, the developers at PKWARE decided to
          store the "zip64 total disks" value as a counter starting from 1,
          whereas all other "split/span volume" related fields use 0-based
@@ -1296,6 +1297,9 @@ static int find_ecrec64(__G__ searchlen)
          When this is not the case, the found ecrec64 locator cannot be valid.
          -> This is not a Zip64 archive.
        */
+      /* There are archive creators that put 0 in total disks when it should
+         be 1.  We should handle this.  This is done by the added check above.
+      */
       Trace((stderr,
              "\ninvalid ECLOC64, differing disk# (ECR %u, ECL64 %lu)\n",
              G.ecrec.number_this_disk, ecloc64_total_disks - 1));
openSUSE Build Service is sponsored by