Fixed a bug with non-appending multi-session and zisofs decompression.

This commit is contained in:
Thomas Schmitt 2009-04-12 16:21:46 +02:00
parent ec672ab903
commit 9a873ed693
2 changed files with 8 additions and 1 deletions

View File

@ -565,7 +565,12 @@ int ziso_stream_uncompress(IsoStream *stream, void *buf, size_t desired)
/* Delivering data blocks */; /* Delivering data blocks */;
i = ++(rng->block_pointer_rpos); i = ++(rng->block_pointer_rpos);
if (i >= rng->block_pointer_fill) { if (i >= rng->block_pointer_fill) {
/* More data blocks than announced */ if (rng->out_counter == data->size) {
rng->state = 3;
rng->block_pointer_rpos--;
return fill;
}
/* More data blocks needed than announced */
return (rng->error_ret = ISO_FILTER_WRONG_INPUT); return (rng->error_ret = ISO_FILTER_WRONG_INPUT);
} }
todo = rng->block_pointers[i] - rng->block_pointers[i- 1]; todo = rng->block_pointers[i] - rng->block_pointers[i- 1];

View File

@ -1142,8 +1142,10 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
size_t cs_value_length = 0; size_t cs_value_length = 0;
char msg[160]; char msg[160];
#ifdef Libisofs_with_zliB
uint8_t zisofs_alg[2], zisofs_hs4 = 0, zisofs_bsl2 = 0; uint8_t zisofs_alg[2], zisofs_hs4 = 0, zisofs_bsl2 = 0;
uint32_t zisofs_usize = 0; uint32_t zisofs_usize = 0;
#endif
if (fs == NULL || fs->data == NULL || record == NULL || src == NULL) { if (fs == NULL || fs->data == NULL || record == NULL || src == NULL) {
return ISO_NULL_POINTER; return ISO_NULL_POINTER;