VirtualBox

source: vbox/trunk/src/libs/liblzma-5.4.1/common/filter_flags_decoder.c

Last change on this file was 98730, checked in by vboxsync, 15 months ago

libs/liblzma-5.4.1: Export to OSE, bugref:10254

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.2 KB
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3/// \file filter_flags_decoder.c
4/// \brief Decodes a Filter Flags field
5//
6// Author: Lasse Collin
7//
8// This file has been put into the public domain.
9// You can do whatever you want with this file.
10//
11///////////////////////////////////////////////////////////////////////////////
12
13#include "filter_decoder.h"
14
15
16extern LZMA_API(lzma_ret)
17lzma_filter_flags_decode(
18 lzma_filter *filter, const lzma_allocator *allocator,
19 const uint8_t *in, size_t *in_pos, size_t in_size)
20{
21 // Set the pointer to NULL so the caller can always safely free it.
22 filter->options = NULL;
23
24 // Filter ID
25 return_if_error(lzma_vli_decode(&filter->id, NULL,
26 in, in_pos, in_size));
27
28 if (filter->id >= LZMA_FILTER_RESERVED_START)
29 return LZMA_DATA_ERROR;
30
31 // Size of Properties
32 lzma_vli props_size;
33 return_if_error(lzma_vli_decode(&props_size, NULL,
34 in, in_pos, in_size));
35
36 // Filter Properties
37 if (in_size - *in_pos < props_size)
38 return LZMA_DATA_ERROR;
39
40 const lzma_ret ret = lzma_properties_decode(
41 filter, allocator, in + *in_pos, props_size);
42
43 *in_pos += props_size;
44
45 return ret;
46}
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use