Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: src/liblzma/common/block_buffer_encoder.c

Issue 7109015: Update XZ Utils to 5.0.3 (in deps) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/xz/
Patch Set: Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/liblzma/common/alone_encoder.c ('k') | src/liblzma/common/block_encoder.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /////////////////////////////////////////////////////////////////////////////// 1 ///////////////////////////////////////////////////////////////////////////////
2 // 2 //
3 /// \file block_buffer_encoder.c 3 /// \file block_buffer_encoder.c
4 /// \brief Single-call .xz Block encoder 4 /// \brief Single-call .xz Block encoder
5 // 5 //
6 // Author: Lasse Collin 6 // Author: Lasse Collin
7 // 7 //
8 // This file has been put into the public domain. 8 // This file has been put into the public domain.
9 // You can do whatever you want with this file. 9 // You can do whatever you want with this file.
10 // 10 //
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 219
220 return ret; 220 return ret;
221 } 221 }
222 222
223 223
224 extern LZMA_API(lzma_ret) 224 extern LZMA_API(lzma_ret)
225 lzma_block_buffer_encode(lzma_block *block, lzma_allocator *allocator, 225 lzma_block_buffer_encode(lzma_block *block, lzma_allocator *allocator,
226 const uint8_t *in, size_t in_size, 226 const uint8_t *in, size_t in_size,
227 uint8_t *out, size_t *out_pos, size_t out_size) 227 uint8_t *out, size_t *out_pos, size_t out_size)
228 { 228 {
229 » // Sanity checks 229 » // Validate the arguments.
230 » if (block == NULL || block->filters == NULL 230 » if (block == NULL || (in == NULL && in_size != 0) || out == NULL
231 » » » || (in == NULL && in_size != 0) || out == NULL
232 || out_pos == NULL || *out_pos > out_size) 231 || out_pos == NULL || *out_pos > out_size)
233 return LZMA_PROG_ERROR; 232 return LZMA_PROG_ERROR;
234 233
235 » // Check the version field. 234 » // The contents of the structure may depend on the version so
235 » // check the version before validating the contents of *block.
236 if (block->version != 0) 236 if (block->version != 0)
237 return LZMA_OPTIONS_ERROR; 237 return LZMA_OPTIONS_ERROR;
238 238
239 if ((unsigned int)(block->check) > LZMA_CHECK_ID_MAX
240 || block->filters == NULL)
241 return LZMA_PROG_ERROR;
242
243 if (!lzma_check_is_supported(block->check))
244 return LZMA_UNSUPPORTED_CHECK;
245
239 // Size of a Block has to be a multiple of four, so limit the size 246 // Size of a Block has to be a multiple of four, so limit the size
240 // here already. This way we don't need to check it again when adding 247 // here already. This way we don't need to check it again when adding
241 // Block Padding. 248 // Block Padding.
242 out_size -= (out_size - *out_pos) & 3; 249 out_size -= (out_size - *out_pos) & 3;
243 250
244 // Get the size of the Check field. 251 // Get the size of the Check field.
245 const size_t check_size = lzma_check_size(block->check); 252 const size_t check_size = lzma_check_size(block->check);
246 » if (check_size == UINT32_MAX) 253 » assert(check_size != UINT32_MAX);
247 » » return LZMA_PROG_ERROR;
248 254
249 // Reserve space for the Check field. 255 // Reserve space for the Check field.
250 if (out_size - *out_pos <= check_size) 256 if (out_size - *out_pos <= check_size)
251 return LZMA_BUF_ERROR; 257 return LZMA_BUF_ERROR;
252 258
253 out_size -= check_size; 259 out_size -= check_size;
254 260
255 // Do the actual compression. 261 // Do the actual compression.
256 const lzma_ret ret = block_encode_normal(block, allocator, 262 const lzma_ret ret = block_encode_normal(block, allocator,
257 in, in_size, out, out_pos, out_size); 263 in, in_size, out, out_pos, out_size);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 lzma_check_update(&check, block->check, in, in_size); 296 lzma_check_update(&check, block->check, in, in_size);
291 lzma_check_finish(&check, block->check); 297 lzma_check_finish(&check, block->check);
292 298
293 memcpy(block->raw_check, check.buffer.u8, check_size); 299 memcpy(block->raw_check, check.buffer.u8, check_size);
294 memcpy(out + *out_pos, check.buffer.u8, check_size); 300 memcpy(out + *out_pos, check.buffer.u8, check_size);
295 *out_pos += check_size; 301 *out_pos += check_size;
296 } 302 }
297 303
298 return LZMA_OK; 304 return LZMA_OK;
299 } 305 }
OLDNEW
« no previous file with comments | « src/liblzma/common/alone_encoder.c ('k') | src/liblzma/common/block_encoder.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698