]> git.seodisparate.com - SimpleArchiver/commitdiff
Fix file format 4 archive creation
authorStephen Seo <seo.disparate@gmail.com>
Fri, 18 Apr 2025 07:57:50 +0000 (16:57 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Fri, 18 Apr 2025 07:57:50 +0000 (16:57 +0900)
Previous implementation errored out by mistake when counts were at least
2^32 in size, since file format 4 should support 64-bit (8-byte) counts
of file-count-size, chunk-count-size, and directory-count-size.

src/archiver.c

index 80dcb01f55c3e273630776cea6373eb558c0d89c..63052f0b087bc11faea38a245d4c331bf661a2e4 100644 (file)
@@ -6237,10 +6237,6 @@ SDArchiverStateRetStruct simple_archiver_write_v4(
     uint64_t count = 0;
     for (SDArchiverLLNode *node = chunk_counts->head->next;
          node != chunk_counts->tail; node = node->next) {
-      if (*((uint64_t *)node->data) > 0xFFFFFFFF) {
-        fprintf(stderr, "ERROR: file count in chunk is too large!\n");
-        return SDA_RET_STRUCT(SDAS_INTERNAL_ERROR);
-      }
       count += *((uint64_t *)node->data);
     }
     if (count != files_list->count) {
@@ -6780,11 +6776,6 @@ SDArchiverStateRetStruct simple_archiver_write_v4(
   }
 
   // Write directory entries.
-
-  if (dirs_list->count > 0xFFFFFFFF) {
-    return SDA_RET_STRUCT(SDAS_TOO_MANY_DIRS);
-  }
-
   u64 = dirs_list->count;
   if (u64 != 0) {
     fprintf(stderr, "Directories:\n");