]> granicus.if.org Git - xz/commitdiff
liblzma: Fix lzma_index_dup() for empty Streams.
authorLasse Collin <lasse.collin@tukaani.org>
Mon, 12 Oct 2015 17:45:15 +0000 (20:45 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Mon, 12 Oct 2015 17:45:15 +0000 (20:45 +0300)
Stream Flags and Stream Padding weren't copied from
empty Streams.

src/liblzma/common/index.c

index bc1ef29210b9ed48daf3e013dd98a4db3ab18760..26e4e519bc800627089297a73ae6df0d9921f901 100644 (file)
@@ -872,11 +872,8 @@ index_dup_stream(const index_stream *src, const lzma_allocator *allocator)
        index_stream *dest = index_stream_init(src->node.compressed_base,
                        src->node.uncompressed_base, src->number,
                        src->block_number_base, allocator);
-
-       // Return immediately if allocation failed or if there are
-       // no groups to duplicate.
-       if (dest == NULL || src->groups.leftmost == NULL)
-               return dest;
+       if (dest == NULL)
+               return NULL;
 
        // Copy the overall information.
        dest->record_count = src->record_count;
@@ -884,6 +881,10 @@ index_dup_stream(const index_stream *src, const lzma_allocator *allocator)
        dest->stream_flags = src->stream_flags;
        dest->stream_padding = src->stream_padding;
 
+       // Return if there are no groups to duplicate.
+       if (src->groups.leftmost == NULL)
+               return dest;
+
        // Allocate memory for the Records. We put all the Records into
        // a single group. It's simplest and also tends to make
        // lzma_index_locate() a little bit faster with very big Indexes.