diff options
author | Jia Tan <jiat0218@gmail.com> | 2023-08-28 23:14:45 +0800 |
---|---|---|
committer | Jia Tan <jiat0218@gmail.com> | 2023-10-31 01:02:59 +0800 |
commit | cf8ba7c3a89e37736b926dfbe85dffeff725db47 (patch) | |
tree | 1e87e266c07e7d78d5ffd6927289154d936d8c2f /tests/test_index.c | |
parent | Tests: Improve comments in test_index.c. (diff) | |
download | xz-cf8ba7c3a89e37736b926dfbe85dffeff725db47.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 68bda971bb8b666a009331455fcedb4e18d837a4.
Diffstat (limited to '')
-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 a1269204..a14b33d7 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 68bda971bb8b666a009331455fcedb4e18d837a4. // 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, |