]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Fix initialize stream.avail_in and error handling.
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 1 Feb 2009 09:05:40 +0000 (04:05 -0500)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Sun, 1 Feb 2009 09:05:40 +0000 (04:05 -0500)
SVN-Revision: 528

libarchive/archive_read_support_compression_xz.c

index 33436148bf2616f2c8b5b7226e3c4c0b65532583..60a31ed51d5318804c647e3a2a348ccc8c6a8523 100644 (file)
@@ -295,7 +295,7 @@ xz_lzma_bidder_init(struct archive_read_filter *self, int code)
        self->close = xz_filter_close;
 
        state->stream.next_in = buff;
-       state->stream.avail_in = ret;
+       state->stream.avail_in = 0;
 
        state->stream.next_out = state->out_block;
        state->stream.avail_out = state->out_block_size;
@@ -391,30 +391,30 @@ xz_filter_read(struct archive_read_filter *self, const void **p)
                        archive_set_error(&self->archive->archive, ENOMEM,
                            "Internal error decompressing compression library: "
                            "Cannot allocate memory");
-                       break;
+                       return (ARCHIVE_FATAL);
                case LZMA_MEMLIMIT_ERROR:
                        archive_set_error(&self->archive->archive, ENOMEM,
                            "Internal error decompressing compression library: "
                            "Memory usage limit was reached");
-                       break;
+                       return (ARCHIVE_FATAL);
                case LZMA_FORMAT_ERROR:
                        archive_set_error(&self->archive->archive,
                            ARCHIVE_ERRNO_MISC,
                            "Internal error decompressing compression library: "
                            "File format not recognized");
-                       break;
+                       return (ARCHIVE_FATAL);
                case LZMA_OPTIONS_ERROR:
                        archive_set_error(&self->archive->archive,
                            ARCHIVE_ERRNO_MISC,
                            "Internal error decompressing compression library: "
                            "Invalid or unsupported options");
-                       break;
+                       return (ARCHIVE_FATAL);
                case LZMA_DATA_ERROR:
                        archive_set_error(&self->archive->archive,
                            ARCHIVE_ERRNO_MISC,
                            "Internal error decompressing compression library: "
                            "Data is corrupt");
-                       break;
+                       return (ARCHIVE_FATAL);
                case LZMA_BUF_ERROR:
                        archive_set_error(&self->archive->archive,
                            ARCHIVE_ERRNO_MISC,