]> granicus.if.org Git - xz/commitdiff
Always initialize lz->temp_size in lz_decoder.c. temp_size did
authorLasse Collin <lasse.collin@tukaani.org>
Mon, 10 Mar 2008 11:44:29 +0000 (13:44 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Mon, 10 Mar 2008 11:44:29 +0000 (13:44 +0200)
get initialized as a side-effect after allocating a new decoder,
but not when the decoder was reused.

src/liblzma/lz/lz_decoder.c

index 92aaff6abd226f3bfece21e24b03f60a2ccfaeba..63945a18945bd9244572ca2b2698fe24cedc2e93 100644 (file)
@@ -429,11 +429,6 @@ lzma_lz_decoder_reset(lzma_lz_decoder *lz, lzma_allocator *allocator,
                        return LZMA_MEM_ERROR;
        }
 
-       // Clean up the temporary buffer to make it very sure that there are
-       // no information leaks when multiple steams are decoded with the
-       // same decoder structures.
-       memzero(lz->temp, LZMA_BUFFER_SIZE);
-
        // Reset the variables so that lz_get_byte(lz, 0) will return '\0'.
        lz->pos = 0;
        lz->start = 0;
@@ -442,6 +437,12 @@ lzma_lz_decoder_reset(lzma_lz_decoder *lz, lzma_allocator *allocator,
        lz->eopm_detected = false;
        lz->next_finished = false;
        lz->this_finished = false;
+       lz->temp_size = 0;
+
+       // Clean up the temporary buffer to make it very sure that there are
+       // no information leaks when multiple steams are decoded with the
+       // same decoder structures.
+       memzero(lz->temp, LZMA_BUFFER_SIZE);
 
        // Set the process function pointer.
        lz->process = process;