]> granicus.if.org Git - xz/commitdiff
Fix stupid bugs in flush marker detection.
authorLasse Collin <lasse.collin@tukaani.org>
Fri, 4 Jan 2008 19:37:01 +0000 (21:37 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Fri, 4 Jan 2008 19:37:01 +0000 (21:37 +0200)
src/liblzma/lzma/lzma_decoder.c

index 037985ce221ea57dfdf179e77e12beec1c2ed536..90531c8d61acd71ee236f78f6f038e9eab38f5ad 100644 (file)
@@ -488,14 +488,14 @@ decode_real(lzma_coder *restrict coder, const uint8_t *restrict in,
                                                        // flush marker or the beginning of the stream.
                                                        // This is to prevent hanging the decoder with
                                                        // malicious input files.
-                                                       if (!coder->has_produced_output)
+                                                       if (!has_produced_output)
                                                                return true;
 
-                                                       coder->has_produced_output = false;
+                                                       has_produced_output = false;
 
                                                        rc_reset(rc);
                                                        if (!rc_read_init(&rc, in, &in_pos_local, in_size))
-                                                               break;
+                                                               goto out; // Avoiding rc_normalize()
 
                                                } else {
                                                        return true;
@@ -622,6 +622,7 @@ decode_real(lzma_coder *restrict coder, const uint8_t *restrict in,
        // Update the *data structure. //
        /////////////////////////////////
 
+out:
        // Range decoder
        rc_from_local(coder->rc);