From 9ff4dadca96a5ac3cb478759a4fdb8663be114eb Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 3 Jun 2026 00:05:48 +0300 Subject: [PATCH] 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. --- src/liblzma/common/index.h | 6 ++++++ 1 file changed, 6 insertions(+) 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