aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/liblzma/common/common.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c
index 07b1d476..0408e153 100644
--- a/src/liblzma/common/common.c
+++ b/src/liblzma/common/common.c
@@ -182,6 +182,20 @@ lzma_code(lzma_stream *strm, lzma_action action)
|| !strm->internal->supported_actions[action])
return LZMA_PROG_ERROR;
+ // Check if unsupported members have been set to non-zero or non-NULL,
+ // which would indicate that some new feature is wanted.
+ if (strm->reserved_ptr1 != NULL
+ || strm->reserved_ptr2 != NULL
+ || strm->reserved_ptr3 != NULL
+ || strm->reserved_ptr4 != NULL
+ || strm->reserved_int1 != 0
+ || strm->reserved_int2 != 0
+ || strm->reserved_int3 != 0
+ || strm->reserved_int4 != 0
+ || strm->reserved_enum1 != LZMA_RESERVED_ENUM
+ || strm->reserved_enum2 != LZMA_RESERVED_ENUM)
+ return LZMA_OPTIONS_ERROR;
+
switch (strm->internal->sequence) {
case ISEQ_RUN:
switch (action) {