diff options
author | Jia Tan <jiat0218@gmail.com> | 2023-05-08 22:58:09 +0800 |
---|---|---|
committer | Jia Tan <jiat0218@gmail.com> | 2023-05-11 22:28:45 +0800 |
commit | d0f33d672a4da7985ebb5ba8d829f885de49c171 (patch) | |
tree | 0200c537d23be7b4ad1f60ccd70574026b26f73a | |
parent | Add NEWS for 5.4.3. (diff) | |
download | xz-d0f33d672a4da7985ebb5ba8d829f885de49c171.tar.xz |
liblzma: Creates IS_ENC_DICT_SIZE_VALID() macro.
This creates an internal liblzma macro to test if the dictionary size
is valid for encoding.
-rw-r--r-- | src/liblzma/lz/lz_encoder.c | 4 | ||||
-rw-r--r-- | src/liblzma/lz/lz_encoder.h | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/liblzma/lz/lz_encoder.c b/src/liblzma/lz/lz_encoder.c index 5489085a..8e724a03 100644 --- a/src/liblzma/lz/lz_encoder.c +++ b/src/liblzma/lz/lz_encoder.c @@ -196,9 +196,7 @@ lz_encoder_prepare(lzma_mf *mf, const lzma_allocator *allocator, // For now, the dictionary size is limited to 1.5 GiB. This may grow // in the future if needed, but it needs a little more work than just // changing this check. - if (lz_options->dict_size < LZMA_DICT_SIZE_MIN - || lz_options->dict_size - > (UINT32_C(1) << 30) + (UINT32_C(1) << 29) + if (!IS_ENC_DICT_SIZE_VALID(lz_options->dict_size) || lz_options->nice_len > lz_options->match_len_max) return true; diff --git a/src/liblzma/lz/lz_encoder.h b/src/liblzma/lz/lz_encoder.h index 7950a2f4..2027b39f 100644 --- a/src/liblzma/lz/lz_encoder.h +++ b/src/liblzma/lz/lz_encoder.h @@ -17,6 +17,14 @@ #include "common.h" +// For now, the dictionary size is limited to 1.5 GiB. This may grow +// in the future if needed, but it needs a little more work than just +// changing this check. +#define IS_ENC_DICT_SIZE_VALID(size) \ + ((size) >= LZMA_DICT_SIZE_MIN \ + && (size) <= (UINT32_C(1) << 30) + (UINT32_C(1) << 29)) + + /// A table of these is used by the LZ-based encoder to hold /// the length-distance pairs found by the match finder. typedef struct { |