diff options
author | Jia Tan <jiat0218@gmail.com> | 2023-08-28 23:14:45 +0800 |
---|---|---|
committer | Jia Tan <jiat0218@gmail.com> | 2023-08-28 23:14:45 +0800 |
commit | 74c3449d8b816a724b12ebce7417e00fb597309a (patch) | |
tree | 805b3e8785a297253aad7d34137af2f8adb80d63 /tests/test_index.c | |
parent | Tests: Improve comments in test_index.c. (diff) | |
download | xz-74c3449d8b816a724b12ebce7417e00fb597309a.tar.xz |
Tests: Improve invalid unpadded size check in test_lzma_index_append().
This check was extended to test the code added to fix a failing assert
in ae5c07b22a6b3766b84f409f1b6b5c100469068a.
Diffstat (limited to 'tests/test_index.c')
-rw-r--r-- | tests/test_index.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/tests/test_index.c b/tests/test_index.c index 9cf4719b..458386df 100644 --- a/tests/test_index.c +++ b/tests/test_index.c @@ -134,15 +134,35 @@ test_lzma_index_append(void) lzma_index_end(idx, NULL); - // Test uncompressed .xz file size growing too large. + // Test compressed .xz file size growing too large. This also tests + // a failing assert fixed in ae5c07b22a6b3766b84f409f1b6b5c100469068a. // Should result in LZMA_DATA_ERROR. idx = lzma_index_init(NULL); - assert_lzma_ret(lzma_index_append(idx, NULL, UNPADDED_SIZE_MAX, - 1), LZMA_DATA_ERROR); + // The calculation for maximum unpadded size is to make room for the + // second stream when lzma_index_cat() is called. The + // 4 * LZMA_STREAM_HEADER_SIZE is for the header and footer of + // both streams. The extra 24 bytes are for the size of the indexes + // for both streams. This allows us to maximize the unpadded sum + // during the lzma_index_append() call after the indexes have been + // concatenated. + assert_lzma_ret(lzma_index_append(idx, NULL, UNPADDED_SIZE_MAX + - ((4 * LZMA_STREAM_HEADER_SIZE) + 24), 1), LZMA_OK); + + lzma_index *second = lzma_index_init(NULL); + assert_true(second != NULL); + + assert_lzma_ret(lzma_index_cat(second, idx, NULL), LZMA_OK); + + assert_lzma_ret(lzma_index_append(second, NULL, UNPADDED_SIZE_MAX, 1), + LZMA_DATA_ERROR); + + lzma_index_end(second, NULL); // Test uncompressed size growing too large. // Should result in LZMA_DATA_ERROR. + idx = lzma_index_init(NULL); + assert_lzma_ret(lzma_index_append(idx, NULL, UNPADDED_SIZE_MIN, LZMA_VLI_MAX), LZMA_OK); assert_lzma_ret(lzma_index_append(idx, NULL, |