]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Guard RAR seek cursor before previous block lookup
author0xmrniko <ap7737586@gmail.com>
Sun, 19 Jul 2026 13:12:05 +0000 (18:42 +0530)
committer0xmrniko <ap7737586@gmail.com>
Sun, 19 Jul 2026 14:00:23 +0000 (19:30 +0530)
libarchive/archive_read_support_format_rar.c

index 801f26997dfa716359676c725aad3f2f2beaeab7..36d0e0831e09c317e866fd541698c58e937b28f9 100644 (file)
@@ -1293,6 +1293,12 @@ archive_read_format_rar_seek_data(struct archive_read *a, int64_t offset,
               "Error during seek of RAR file");
             return (ARCHIVE_FAILED);
           }
+          if (rar->cursor == 0)
+          {
+            archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+              "Invalid RAR seek cursor state");
+            return (ARCHIVE_FAILED);
+          }
           client_offset += rar->dbo[rar->cursor].start_offset -
             rar->dbo[rar->cursor-1].end_offset;
           continue;