Index: src/liblzma/common/common.c |
=================================================================== |
--- src/liblzma/common/common.c (revision 50504) |
+++ src/liblzma/common/common.c (working copy) |
@@ -35,7 +35,7 @@ |
// Memory allocation // |
/////////////////////// |
-extern void * lzma_attribute((malloc)) |
+extern void * lzma_attribute((__malloc__)) lzma_attr_alloc_size(1) |
lzma_alloc(size_t size, lzma_allocator *allocator) |
{ |
// Some malloc() variants return NULL if called with size == 0. |
@@ -182,6 +182,20 @@ |
|| !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) { |