aboutsummaryrefslogtreecommitdiff
path: root/src/liblzma
diff options
context:
space:
mode:
authorJia Tan <jiat0218@gmail.com>2023-01-07 00:10:50 +0800
committerGitHub <noreply@github.com>2023-01-07 00:10:50 +0800
commit6fd39664de47801e670a16617863196bfbde4755 (patch)
tree5ada7ec4f0d114da655aa6d05791e99bdcddea74 /src/liblzma
parentStyle: Change #if !defined() to #ifndef in mythread.h. (diff)
parentTests: test_index_hash: Add an assert_uint_eq(). (diff)
downloadxz-6fd39664de47801e670a16617863196bfbde4755.tar.xz
Merge pull request #7 from tukaani-project/tuktest_index_hash
Tuktest index hash
Diffstat (limited to 'src/liblzma')
-rw-r--r--src/liblzma/common/index.c1
-rw-r--r--src/liblzma/common/index.h12
-rw-r--r--src/liblzma/common/index_decoder.c2
-rw-r--r--src/liblzma/common/index_decoder.h1
-rw-r--r--src/liblzma/common/index_encoder.c2
-rw-r--r--src/liblzma/common/index_hash.c4
-rw-r--r--src/liblzma/common/stream_buffer_encoder.c1
-rw-r--r--src/liblzma/common/stream_decoder.c3
-rw-r--r--src/liblzma/common/stream_decoder_mt.c2
9 files changed, 20 insertions, 8 deletions
diff --git a/src/liblzma/common/index.c b/src/liblzma/common/index.c
index 24ec3c10..97cc9f95 100644
--- a/src/liblzma/common/index.c
+++ b/src/liblzma/common/index.c
@@ -10,6 +10,7 @@
//
///////////////////////////////////////////////////////////////////////////////
+#include "common.h"
#include "index.h"
#include "stream_flags_common.h"
diff --git a/src/liblzma/common/index.h b/src/liblzma/common/index.h
index 64e97247..031efcc7 100644
--- a/src/liblzma/common/index.h
+++ b/src/liblzma/common/index.h
@@ -2,6 +2,13 @@
//
/// \file index.h
/// \brief Handling of Index
+/// \note This header file does not include common.h or lzma.h because
+/// this file is needed by both liblzma internally and by the
+/// tests. Including common.h will include and define many things
+/// the tests do not need and prevents issues with header file
+/// include order. This way, if lzma.h or common.h are not
+/// included before this file it will break on every OS instead
+/// of causing more subtle errors.
//
// Author: Lasse Collin
//
@@ -13,8 +20,6 @@
#ifndef LZMA_INDEX_H
#define LZMA_INDEX_H
-#include "common.h"
-
/// Minimum Unpadded Size
#define UNPADDED_SIZE_MIN LZMA_VLI_C(5)
@@ -22,6 +27,9 @@
/// Maximum Unpadded Size
#define UNPADDED_SIZE_MAX (LZMA_VLI_MAX & ~LZMA_VLI_C(3))
+/// Index Indicator based on xz specification
+#define INDEX_INDICATOR 0
+
/// Get the size of the Index Padding field. This is needed by Index encoder
/// and decoder, but applications should have no use for this.
diff --git a/src/liblzma/common/index_decoder.c b/src/liblzma/common/index_decoder.c
index b2689885..8622b2f0 100644
--- a/src/liblzma/common/index_decoder.c
+++ b/src/liblzma/common/index_decoder.c
@@ -80,7 +80,7 @@ index_decode(void *coder_ptr, const lzma_allocator *allocator,
// format". One could argue that the application should
// verify the Index Indicator before trying to decode the
// Index, but well, I suppose it is simpler this way.
- if (in[(*in_pos)++] != 0x00)
+ if (in[(*in_pos)++] != INDEX_INDICATOR)
return LZMA_DATA_ERROR;
coder->sequence = SEQ_COUNT;
diff --git a/src/liblzma/common/index_decoder.h b/src/liblzma/common/index_decoder.h
index 1af433b5..3fec4833 100644
--- a/src/liblzma/common/index_decoder.h
+++ b/src/liblzma/common/index_decoder.h
@@ -13,6 +13,7 @@
#ifndef LZMA_INDEX_DECODER_H
#define LZMA_INDEX_DECODER_H
+#include "common.h"
#include "index.h"
diff --git a/src/liblzma/common/index_encoder.c b/src/liblzma/common/index_encoder.c
index ac97d0ce..c7cafb72 100644
--- a/src/liblzma/common/index_encoder.c
+++ b/src/liblzma/common/index_encoder.c
@@ -65,7 +65,7 @@ index_encode(void *coder_ptr,
while (*out_pos < out_size)
switch (coder->sequence) {
case SEQ_INDICATOR:
- out[*out_pos] = 0x00;
+ out[*out_pos] = INDEX_INDICATOR;
++*out_pos;
coder->sequence = SEQ_COUNT;
break;
diff --git a/src/liblzma/common/index_hash.c b/src/liblzma/common/index_hash.c
index 34df85d7..f55f7bc8 100644
--- a/src/liblzma/common/index_hash.c
+++ b/src/liblzma/common/index_hash.c
@@ -145,7 +145,7 @@ lzma_index_hash_append(lzma_index_hash *index_hash, lzma_vli unpadded_size,
lzma_vli uncompressed_size)
{
// Validate the arguments.
- if (index_hash->sequence != SEQ_BLOCK
+ if (index_hash == NULL || index_hash->sequence != SEQ_BLOCK
|| unpadded_size < UNPADDED_SIZE_MIN
|| unpadded_size > UNPADDED_SIZE_MAX
|| uncompressed_size > LZMA_VLI_MAX)
@@ -190,7 +190,7 @@ lzma_index_hash_decode(lzma_index_hash *index_hash, const uint8_t *in,
switch (index_hash->sequence) {
case SEQ_BLOCK:
// Check the Index Indicator is present.
- if (in[(*in_pos)++] != 0x00)
+ if (in[(*in_pos)++] != INDEX_INDICATOR)
return LZMA_DATA_ERROR;
index_hash->sequence = SEQ_COUNT;
diff --git a/src/liblzma/common/stream_buffer_encoder.c b/src/liblzma/common/stream_buffer_encoder.c
index af49554a..73157590 100644
--- a/src/liblzma/common/stream_buffer_encoder.c
+++ b/src/liblzma/common/stream_buffer_encoder.c
@@ -10,6 +10,7 @@
//
///////////////////////////////////////////////////////////////////////////////
+#include "common.h"
#include "index.h"
diff --git a/src/liblzma/common/stream_decoder.c b/src/liblzma/common/stream_decoder.c
index dcf7c149..64283812 100644
--- a/src/liblzma/common/stream_decoder.c
+++ b/src/liblzma/common/stream_decoder.c
@@ -12,6 +12,7 @@
#include "stream_decoder.h"
#include "block_decoder.h"
+#include "index.h"
typedef struct {
@@ -164,7 +165,7 @@ stream_decode(void *coder_ptr, const lzma_allocator *allocator,
if (coder->pos == 0) {
// Detect if it's Index.
- if (in[*in_pos] == 0x00) {
+ if (in[*in_pos] == INDEX_INDICATOR) {
coder->sequence = SEQ_INDEX;
break;
}
diff --git a/src/liblzma/common/stream_decoder_mt.c b/src/liblzma/common/stream_decoder_mt.c
index 5733c764..fd5cd7fd 100644
--- a/src/liblzma/common/stream_decoder_mt.c
+++ b/src/liblzma/common/stream_decoder_mt.c
@@ -887,7 +887,7 @@ decode_block_header(struct lzma_stream_coder *coder,
if (coder->pos == 0) {
// Detect if it's Index.
- if (in[*in_pos] == 0x00)
+ if (in[*in_pos] == INDEX_INDICATOR)
return LZMA_INDEX_DETECTED;
// Calculate the size of the Block Header. Note that