commit 9ff4dadca96a5ac3cb478759a4fdb8663be114eb
Author: Lasse Collin <lasse.collin@tukaani.org>
Date: Wed Jun 3 00:05:48 2026 +0300
liblzma: Add internal constant INDEX_RECORDS_MAX
It's the theoretical maximum number of Records that fit in a .xz file.
This can be used to reject obviously wrong values.
diff --git a/src/liblzma/common/index.h b/src/liblzma/common/index.h
index 007e1188..6fe4a52c 100644
--- a/src/liblzma/common/index.h
+++ b/src/liblzma/common/index.h
@@ -26,6 +26,12 @@
/// Maximum Unpadded Size
#define UNPADDED_SIZE_MAX (LZMA_VLI_MAX & ~LZMA_VLI_C(3))
+/// Maximum number of Records if all sizes fit in one byte:
+/// Index Indicator (1) + Number of Records (5) + List of Records + CRC32 (4)
+/// Larger value isn't possible because then the Index would grow larger than
+/// what Backward Size in Stream Footer can encode (2^34 bytes).
+#define INDEX_RECORDS_MAX ((LZMA_BACKWARD_SIZE_MAX - 1 - 5 - 4) / 2)
+
/// Index Indicator based on xz specification
#define INDEX_INDICATOR 0