]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
GCC on 64-bit Linux has 32-bit int and 64-bit size_t; not
authorTim Kientzle <kientzle@gmail.com>
Tue, 3 Feb 2009 18:21:12 +0000 (13:21 -0500)
committerTim Kientzle <kientzle@gmail.com>
Tue, 3 Feb 2009 18:21:12 +0000 (13:21 -0500)
taking this into account led to a stack overwrite that broke
most of the new decompression code on this platform.

SVN-Revision: 539

libarchive/archive_read_support_compression_bzip2.c
libarchive/archive_read_support_compression_compress.c
libarchive/archive_read_support_compression_gzip.c
libarchive/archive_read_support_compression_lzma.c
libarchive/archive_read_support_compression_xz.c
libarchive/archive_read_support_format_cpio.c

index 3662852129b8e9b1d198796a46943bfeb79c128a..1504ae9cbea550763f15130027372f88996b4261 100644 (file)
@@ -106,7 +106,7 @@ static int
 bzip2_reader_bid(struct archive_read_filter_bidder *self, struct archive_read_filter *filter)
 {
        const unsigned char *buffer;
-       size_t avail;
+       ssize_t avail;
        int bits_checked;
 
        (void)self; /* UNUSED */
@@ -201,7 +201,7 @@ bzip2_filter_read(struct archive_read_filter *self, const void **p)
        struct private_data *state;
        size_t read_avail, decompressed;
        unsigned char *read_buf;
-       int ret;
+       ssize_t ret;
 
        state = (struct private_data *)self->data;
        read_avail = 0;
index 2fe037d150d493d5d5dcc74ead85b09a26d33797..f6c15795e5a3d8ae2d42639ff71bf14b1e47be7a 100644 (file)
@@ -169,7 +169,7 @@ compress_bidder_bid(struct archive_read_filter_bidder *self,
     struct archive_read_filter *filter)
 {
        const unsigned char *buffer;
-       size_t avail;
+       ssize_t avail;
        int bits_checked;
 
        (void)self; /* UNUSED */
@@ -411,7 +411,8 @@ static int
 getbits(struct archive_read_filter *self, int n)
 {
        struct private_data *state = (struct private_data *)self->data;
-       int code, ret;
+       int code;
+       ssize_t ret;
        static const int mask[] = {
                0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff,
                0x1ff, 0x3ff, 0x7ff, 0xfff, 0x1fff, 0x3fff, 0x7fff, 0xffff
index 3700bedf22f0f02655d95fb70c78b21293f08bee..96b129e3a0260cf0fc324ce54d39d46d7262f917 100644 (file)
@@ -112,7 +112,7 @@ gzip_bidder_bid(struct archive_read_filter_bidder *self,
     struct archive_read_filter *filter)
 {
        const unsigned char *buffer;
-       size_t avail;
+       ssize_t avail;
        int bits_checked;
 
        (void)self; /* UNUSED */
@@ -349,7 +349,7 @@ gzip_filter_read(struct archive_read_filter *self, const void **p)
        struct private_data *state;
        size_t read_avail, decompressed;
        const void *read_buf;
-       int ret;
+       ssize_t ret;
 
        state = (struct private_data *)self->data;
        read_avail = 0;
index 7b91d71d0efa7b8979e416f6162ca9454bbdd455..9a939020f84d3fe63ac6f123365595c9eba381d4 100644 (file)
@@ -117,7 +117,7 @@ lzma_bidder_bid(struct archive_read_filter_bidder *self,
     struct archive_read_filter *filter)
 {
        const unsigned char *buffer;
-       size_t avail;
+       ssize_t avail;
        int bits_checked;
 
        (void)self; /* UNUSED */
@@ -186,7 +186,7 @@ lzma_bidder_init(struct archive_read_filter *self)
        void *out_block;
        const char *buff;
        struct private_data *state;
-       int ret;
+       ssize_t ret;
 
        self->code = ARCHIVE_COMPRESSION_LZMA;
        self->name = "lzma";
@@ -267,7 +267,7 @@ lzma_filter_read(struct archive_read_filter *self, const void **p)
        struct private_data *state;
        size_t read_avail, decompressed;
        const void *read_buf;
-       int ret;
+       ssize_t ret;
 
        state = (struct private_data *)self->data;
        read_avail = 0;
index 60a31ed51d5318804c647e3a2a348ccc8c6a8523..7ac7a8c3af4c2d18f2b4c5f8d307ebc84eca71d7 100644 (file)
@@ -133,7 +133,7 @@ xz_bidder_bid(struct archive_read_filter_bidder *self,
     struct archive_read_filter *filter)
 {
        const unsigned char *buffer;
-       size_t avail;
+       ssize_t avail;
        int bits_checked;
 
        (void)self; /* UNUSED */
index 622bb67935418726df851538462a4fca0344ae41..56247dd1c6d47eaeefc0cbdfcee20b04a72bd58d 100644 (file)
@@ -331,7 +331,8 @@ find_newc_header(struct archive_read *a)
 {
        const void *h;
        const char *p, *q;
-       size_t skip, bytes, skipped = 0;
+       size_t skip, skipped = 0;
+       ssize_t bytes;
 
        for (;;) {
                h = __archive_read_ahead(a, sizeof(struct cpio_newc_header), &bytes);
@@ -465,7 +466,8 @@ find_odc_header(struct archive_read *a)
 {
        const void *h;
        const char *p, *q;
-       size_t skip, bytes, skipped = 0;
+       size_t skip, skipped = 0;
+       ssize_t bytes;
 
        for (;;) {
                h = __archive_read_ahead(a, sizeof(struct cpio_odc_header), &bytes);