1// SPDX-License-Identifier: 0BSD 2 3/////////////////////////////////////////////////////////////////////////////// 4// 5/// \file simple_decoder.c 6/// \brief Properties decoder for simple filters 7// 8// Author: Lasse Collin 9// 10/////////////////////////////////////////////////////////////////////////////// 11 12#include "simple_decoder.h" 13 14 15extern lzma_ret 16lzma_simple_props_decode(void **options, const lzma_allocator *allocator, 17 const uint8_t *props, size_t props_size) 18{ 19 if (props_size == 0) 20 return LZMA_OK; 21 22 if (props_size != 4) 23 return LZMA_OPTIONS_ERROR; 24 25 lzma_options_bcj *opt = lzma_alloc( 26 sizeof(lzma_options_bcj), allocator); 27 if (opt == NULL) 28 return LZMA_MEM_ERROR; 29 30 opt->start_offset = read32le(props); 31 32 // Don't leave an options structure allocated if start_offset is zero. 33 if (opt->start_offset == 0) 34 lzma_free(opt, allocator); 35 else 36 *options = opt; 37 38 return LZMA_OK; 39} 40