summaryrefslogtreecommitdiff
path: root/src/liblzma/common/common.c
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2010-11-11 22:21:30 +0000
committerMartin Matuska <mm@FreeBSD.org>2010-11-11 22:21:30 +0000
commit4db362f078d756476433b818a60ecdc86906c159 (patch)
tree2dc755263f049e1519b2002c0ffdcb1ff75f902a /src/liblzma/common/common.c
parent140cf3d5f23f94d96c987db2d4b8a60926009aa5 (diff)
Diffstat (limited to 'src/liblzma/common/common.c')
-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 07b1d4763f69e..0408e15328b3a 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) {