diff --git a/2gb.patch b/2gb.patch new file mode 100644 index 0000000..33e9108 --- /dev/null +++ b/2gb.patch @@ -0,0 +1,11 @@ +--- squashfs-tools/mksquashfs.c.orig 2014-09-13 11:08:27.352318167 -0500 ++++ squashfs-tools/mksquashfs.c 2014-09-13 11:09:36.701132044 -0500 +@@ -2055,7 +2055,7 @@ + + inline int is_fragment(struct inode_info *inode) + { +- int file_size = inode->buf.st_size; ++ off_t file_size = inode->buf.st_size; + + /* + * If this block is to be compressed differently to the diff --git a/PAE.patch b/PAE.patch new file mode 100644 index 0000000..d2f29fb --- /dev/null +++ b/PAE.patch @@ -0,0 +1,159 @@ +From 55f7ba830d40d438f0b0663a505e0c227fc68b6b Mon Sep 17 00:00:00 2001 +From: Phillip Lougher +Date: Tue, 10 Jun 2014 21:51:52 +0100 +Subject: mksquashfs: fix phys mem calculation for 32-bit processes on + PAE/64-bit kernels + +When adding the code to base default memory usage on physical memory +(by default use 25% of physical memory), I made an oversight. I assumed +the process would be able to address 25% of physical memory. + +However, for 32-bit processes running on a PAE kernel or 64-bit kernel, +25% of physical memory can easily exceed the addressible memory for a +32-bit process, e.g. if a machine has 24 GB of physical memory, the +code would asume the process could easily use 6 GB. + +A 32-bit process by definition can only address 4 GB (32-bit pointers). +But, due to the typical kernel/user-space split (1GB/3GB, or 2GB/2GB) +on PAE kernels, a 32-bit process may only be able to address 2 GB. + +So, if Mksquashfs is a 32-bit application running on a PAE/64-bit kernel, +the code assumes it can address much more memory than it really can, which +means it runs out of memory. + +The fix is to impose a maximum default limit on 32-bit kernels, or +otherwise to never use a value more than 25% of the address space. If +we assume the maximum address space is 2 GB, then the maximum becomes +512 MB. But, given most kernels used the 1GB/3GB split, that may be +unduely conservative, and 25% of 3 GB (756 MB) may be better. This +patch compromises on 640 MB, which is mid-way between the 512 MB and 756 MB +values. It is also the fixed default value previously used by Mksquashfs. + +This patch also alters the code which imposes a maximum size. Previously +it was believed limiting to the physical memory size was adequate. But +obviously this needs to be updated to take into account a 32-bit process +may only be able to address 2 GB. In the process I've also taken the +opportunity to limit all requests to no more than 75% of physical memory. + +Signed-off-by: Phillip Lougher + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index 86f82bb..5370ecf 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -304,7 +304,7 @@ void restorefs(); + struct dir_info *scan1_opendir(char *pathname, char *subpath, int depth); + void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad); + unsigned short get_checksum_mem(char *buff, int bytes); +-int get_physical_memory(); ++void check_usable_phys_mem(int total_mem); + + + void prep_exit() +@@ -4053,11 +4053,7 @@ void initialise_threads(int readq, int fragq, int bwriteq, int fwriteq, + BAD_ERROR("Queue sizes rediculously too large\n"); + total_mem += fwriteq; + +- if(total_mem > get_physical_memory()) { +- ERROR("Total queue sizes larger than physical memory.\n"); +- ERROR("Mksquashfs will exhaust physical memory and thrash.\n"); +- BAD_ERROR("Queues too large\n"); +- } ++ check_usable_phys_mem(total_mem); + + /* + * convert from queue size in Mbytes to queue size in +@@ -4879,6 +4875,72 @@ int get_physical_memory() + } + + ++void check_usable_phys_mem(int total_mem) ++{ ++ /* ++ * We want to allow users to use as much of their physical ++ * memory as they wish. However, for practical reasons there are ++ * limits which need to be imposed, to protect users from themselves ++ * and to prevent people from using Mksquashfs as a DOS attack by using ++ * all physical memory. Mksquashfs uses memory to cache data from disk ++ * to optimise performance. It is pointless to ask it to use more ++ * than 75% of physical memory, as this causes thrashing and it is thus ++ * self-defeating. ++ */ ++ int mem = get_physical_memory(); ++ ++ mem = (mem >> 1) + (mem >> 2); /* 75% */ ++ ++ if(total_mem > mem) { ++ ERROR("Total memory requested is more than 75%% of physical " ++ "memory.\n"); ++ ERROR("Mksquashfs uses memory to cache data from disk to " ++ "optimise performance.\n"); ++ ERROR("It is pointless to ask it to use more than this amount " ++ "of memory, as this\n"); ++ ERROR("causes thrashing and it is thus self-defeating.\n"); ++ BAD_ERROR("Requested memory size too large\n"); ++ } ++ ++ if(sizeof(void *) == 4 && total_mem > 2048) { ++ /* ++ * If we're running on a kernel with PAE or on a 64-bit kernel, ++ * then the 75% physical memory limit can still easily exceed ++ * the addressable memory by this process. ++ * ++ * Due to the typical kernel/user-space split (1GB/3GB, or ++ * 2GB/2GB), we have to conservatively assume the 32-bit ++ * processes can only address 2-3GB. So refuse if the user ++ * tries to allocate more than 2GB. ++ */ ++ ERROR("Total memory requested may exceed maximum " ++ "addressable memory by this process\n"); ++ BAD_ERROR("Requested memory size too large\n"); ++ } ++} ++ ++ ++int get_default_phys_mem() ++{ ++ int mem = get_physical_memory() / SQUASHFS_TAKE; ++ ++ if(sizeof(void *) == 4 && mem > 640) { ++ /* ++ * If we're running on a kernel with PAE or on a 64-bit kernel, ++ * the default memory usage can exceed the addressable ++ * memory by this process. ++ * Due to the typical kernel/user-space split (1GB/3GB, or ++ * 2GB/2GB), we have to conservatively assume the 32-bit ++ * processes can only address 2-3GB. So limit the default ++ * usage to 640M, which gives room for other data. ++ */ ++ mem = 640; ++ } ++ ++ return mem; ++} ++ ++ + void calculate_queue_sizes(int mem, int *readq, int *fragq, int *bwriteq, + int *fwriteq) + { +@@ -4890,7 +4952,7 @@ void calculate_queue_sizes(int mem, int *readq, int *fragq, int *bwriteq, + + + #define VERSION() \ +- printf("mksquashfs version 4.3 (2014/05/12)\n");\ ++ printf("mksquashfs version 4.3-git (2014/06/09)\n");\ + printf("copyright (C) 2014 Phillip Lougher "\ + "\n\n"); \ + printf("This program is free software; you can redistribute it and/or"\ +@@ -4918,7 +4980,7 @@ int main(int argc, char *argv[]) + int fragq; + int bwriteq; + int fwriteq; +- int total_mem = get_physical_memory() / SQUASHFS_TAKE; ++ int total_mem = get_default_phys_mem(); + int progress = TRUE; + int force_progress = FALSE; + struct file_buffer **fragment = NULL; +-- +cgit v0.10.1 + diff --git a/README.md b/README.md new file mode 100644 index 0000000..dd1c459 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# squashfs-tools EL 8 RPM Packaging + +This is the upstream EL8 squashfs-tools 4.3-19.el8 patched with: + +https://github.com/plougher/squashfs-tools/commit/de03266983ceb62e5365aac84fcd3b2fd4d16e6f + +To fix: + +https://bugzilla.redhat.com/show_bug.cgi?id=1785652 + +It is needed to avoid sporadic rare failures of `mksquashfs` in Singularity testing on large multi-core machines where a very large number of `mksquashfs` runs take place during `make e2e-test`. + diff --git a/bz1602698.patch b/bz1602698.patch new file mode 100644 index 0000000..3caddde --- /dev/null +++ b/bz1602698.patch @@ -0,0 +1,95 @@ +diff -Nupr a/squashfs-tools/action.c b/squashfs-tools/action.c +--- a/squashfs-tools/action.c 2014-05-09 23:54:13.000000000 -0500 ++++ b/squashfs-tools/action.c 2019-04-18 10:59:53.140496887 -0500 +@@ -1094,8 +1094,14 @@ static int parse_sym_mode_args(struct ac + for (i = 0; i < args; i++) { + struct mode_data *entry = parse_sym_mode_arg(argv[i]); + +- if (entry == NULL) ++ if (entry == NULL) { ++ while (head) { ++ cur = head; ++ head = head->next; ++ free(cur); ++ } + return 0; ++ } + + if (cur) { + cur->next = entry; +diff -Nupr a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +--- a/squashfs-tools/mksquashfs.c 2019-04-18 10:51:05.975460126 -0500 ++++ b/squashfs-tools/mksquashfs.c 2019-04-18 11:04:16.860682497 -0500 +@@ -3537,11 +3537,11 @@ void dir_scan2(struct dir_info *dir, str + char *subpath = strdup(subpathname(dir_ent)); + struct dir_info *sub_dir = scan1_opendir("", subpath, + dir->depth + 1); ++ free(subpath); + if(sub_dir == NULL) { + ERROR_START("Could not create pseudo directory " + "\"%s\"", pseudo_ent->pathname); + ERROR_EXIT(", skipping...\n"); +- free(subpath); + pseudo_ino --; + continue; + } +diff -Nupr a/squashfs-tools/read_fs.c b/squashfs-tools/read_fs.c +--- a/squashfs-tools/read_fs.c 2014-05-09 23:54:13.000000000 -0500 ++++ b/squashfs-tools/read_fs.c 2019-04-18 11:06:32.499233451 -0500 +@@ -974,7 +974,8 @@ long long read_filesystem(char *root_nam + + error: + free(id_table); +- free(inode_table); ++ if (inode_table) ++ free(inode_table); + free(directory_table); + return 0; + } +diff -Nupr a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c +--- a/squashfs-tools/unsquash-4.c 2019-04-18 10:51:05.972460124 -0500 ++++ b/squashfs-tools/unsquash-4.c 2019-04-18 11:32:54.600160166 -0500 +@@ -50,9 +50,11 @@ int read_fragment_table_4(long long *dir + "fragment table index\n"); + + fragment_table = malloc(bytes); +- if(fragment_table == NULL) ++ if(fragment_table == NULL) { ++ free(fragment_table_index); + EXIT_UNSQUASH("read_fragment_table: failed to allocate " + "fragment table\n"); ++ } + + res = read_fs_bytes(fd, sBlk.s.fragment_table_start, + SQUASHFS_FRAGMENT_INDEX_BYTES(sBlk.s.fragments), +@@ -60,7 +62,7 @@ int read_fragment_table_4(long long *dir + if(res == FALSE) { + ERROR("read_fragment_table: failed to read fragment table " + "index\n"); +- return FALSE; ++ goto out; + } + SQUASHFS_INSWAP_FRAGMENT_INDEXES(fragment_table_index, indexes); + +@@ -75,7 +77,8 @@ int read_fragment_table_4(long long *dir + if(length == FALSE) { + ERROR("read_fragment_table: failed to read fragment " + "table index\n"); +- return FALSE; ++ res = FALSE; ++ goto out; + } + } + +@@ -83,7 +86,10 @@ int read_fragment_table_4(long long *dir + SQUASHFS_INSWAP_FRAGMENT_ENTRY(&fragment_table[i]); + + *directory_table_end = fragment_table_index[0]; +- return TRUE; ++ res = TRUE; ++out: ++ free(fragment_table_index); ++ return res; + } + + diff --git a/bz1624173.patch b/bz1624173.patch new file mode 100644 index 0000000..8d1eff9 --- /dev/null +++ b/bz1624173.patch @@ -0,0 +1,11 @@ +--- a/squashfs-tools/Makefile 2019-07-24 13:52:09.552920269 -0400 ++++ b/squashfs-tools/Makefile 2019-07-24 23:52:47.839665687 -0400 +@@ -107,6 +107,8 @@ XATTR_DEFAULT = 1 + # End of BUILD options section # + ############################################### + ++EXTRA_LDFLAGS += -z now -pie ++ + INCLUDEDIR = -I. + INSTALL_DIR = /usr/local/bin + diff --git a/bz1716278.patch b/bz1716278.patch new file mode 100644 index 0000000..bde0071 --- /dev/null +++ b/bz1716278.patch @@ -0,0 +1,21 @@ +--- a/squashfs-tools/mksquashfs.c 2019-08-06 11:03:34.071402614 -0400 ++++ b/squashfs-tools/mksquashfs.c 2019-08-06 11:09:54.063340318 -0400 +@@ -267,6 +267,7 @@ pthread_mutex_t pos_mutex = PTHREAD_MUTE + pthread_mutex_t dup_mutex = PTHREAD_MUTEX_INITIALIZER; + + /* user options that control parallelisation */ ++#define MAX_CPUS 256 + int processors = -1; + int bwriter_size; + +@@ -4124,6 +4125,10 @@ void initialise_threads(int readq, int f + #endif + } + ++ /* Limit the number of processors we're going to use */ ++ if(processors > MAX_CPUS) ++ processors = MAX_CPUS; ++ + if(multiply_overflow(processors, 3) || + multiply_overflow(processors * 3, sizeof(pthread_t))) + BAD_ERROR("Processors too large\n"); diff --git a/cve-2015-4645.patch b/cve-2015-4645.patch new file mode 100644 index 0000000..f69025f --- /dev/null +++ b/cve-2015-4645.patch @@ -0,0 +1,29 @@ +diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c +index ecdaac796f09..2c0cf63daf67 100644 +--- a/squashfs-tools/unsquash-4.c ++++ b/squashfs-tools/unsquash-4.c +@@ -31,9 +31,9 @@ static unsigned int *id_table; + int read_fragment_table_4(long long *directory_table_end) + { + int res, i; +- int bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); +- int indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); +- long long fragment_table_index[indexes]; ++ size_t bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); ++ size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); ++ long long *fragment_table_index; + + TRACE("read_fragment_table: %d fragments, reading %d fragment indexes " + "from 0x%llx\n", sBlk.s.fragments, indexes, +@@ -44,6 +44,11 @@ int read_fragment_table_4(long long *directory_table_end) + return TRUE; + } + ++ fragment_table_index = malloc(indexes*sizeof(long long)); ++ if(fragment_table_index == NULL) ++ EXIT_UNSQUASH("read_fragment_table: failed to allocate " ++ "fragment table index\n"); ++ + fragment_table = malloc(bytes); + if(fragment_table == NULL) + EXIT_UNSQUASH("read_fragment_table: failed to allocate " diff --git a/finalize.patch b/finalize.patch new file mode 100644 index 0000000..c0f8bcf --- /dev/null +++ b/finalize.patch @@ -0,0 +1,12 @@ +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -2445,8 +2445,8 @@ void *frag_deflator(void *arg) + write_buffer->block = bytes; + bytes += compressed_size; + fragments_outstanding --; +- pthread_mutex_unlock(&fragment_mutex); + queue_put(to_writer, write_buffer); ++ pthread_mutex_unlock(&fragment_mutex); + TRACE("Writing fragment %lld, uncompressed size %d, " + "compressed size %d\n", file_buffer->block, + file_buffer->size, compressed_size); diff --git a/local-cve-fix.patch b/local-cve-fix.patch new file mode 100644 index 0000000..6dce1b2 --- /dev/null +++ b/local-cve-fix.patch @@ -0,0 +1,11 @@ +--- squashfs-tools/unsquash-4.c.orig 2015-06-24 14:23:22.270710744 -0500 ++++ squashfs-tools/unsquash-4.c 2015-06-24 14:24:13.671243487 -0500 +@@ -35,7 +35,7 @@ + size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); + long long *fragment_table_index; + +- TRACE("read_fragment_table: %d fragments, reading %d fragment indexes " ++ TRACE("read_fragment_table: %u fragments, reading %zu fragment indexes " + "from 0x%llx\n", sBlk.s.fragments, indexes, + sBlk.s.fragment_table_start); + diff --git a/mem-overflow.patch b/mem-overflow.patch new file mode 100644 index 0000000..1450fe9 --- /dev/null +++ b/mem-overflow.patch @@ -0,0 +1,33 @@ +From 604b607d8ac91eb8afc0b6e3d917d5c073096103 Mon Sep 17 00:00:00 2001 +From: Phillip Lougher +Date: Wed, 11 Jun 2014 04:51:37 +0100 +Subject: mksquashfs: ensure value does not overflow a signed int in -mem + option + +Signed-off-by: Phillip Lougher + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index 5370ecf..9676dc8 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -5193,7 +5193,16 @@ print_compressor_options: + argv[0]); + exit(1); + } +- /* convert from bytes to Mbytes */ ++ ++ /* ++ * convert from bytes to Mbytes, ensuring the value ++ * does not overflow a signed int ++ */ ++ if(number >= (1LL << 51)) { ++ ERROR("%s: -mem invalid mem size\n", argv[0]); ++ exit(1); ++ } ++ + total_mem = number / 1048576; + if(total_mem < (SQUASHFS_LOWMEM / SQUASHFS_TAKE)) { + ERROR("%s: -mem should be %d Mbytes or " +-- +cgit v0.10.1 + diff --git a/mksquashfs-sysmacros-fix.patch b/mksquashfs-sysmacros-fix.patch new file mode 100644 index 0000000..cac5a97 --- /dev/null +++ b/mksquashfs-sysmacros-fix.patch @@ -0,0 +1,22 @@ +diff -Nupr squashfs4.3.orig/squashfs-tools/mksquashfs.c squashfs4.3/squashfs-tools/mksquashfs.c +--- squashfs4.3.orig/squashfs-tools/mksquashfs.c 2018-08-20 10:47:49.286289155 -0400 ++++ squashfs4.3/squashfs-tools/mksquashfs.c 2018-08-20 10:49:28.348541210 -0400 +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff -Nupr squashfs4.3.orig/squashfs-tools/unsquashfs.c squashfs4.3/squashfs-tools/unsquashfs.c +--- squashfs4.3.orig/squashfs-tools/unsquashfs.c 2018-08-20 10:47:49.283289208 -0400 ++++ squashfs4.3/squashfs-tools/unsquashfs.c 2018-08-20 10:58:44.238732579 -0400 +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + #include + #include + diff --git a/squashfs-tools.spec b/squashfs-tools.spec new file mode 100644 index 0000000..c07c1cf --- /dev/null +++ b/squashfs-tools.spec @@ -0,0 +1,378 @@ +Summary: Utility for the creation of squashfs filesystems +Name: squashfs-tools +Version: 4.3 +Release: 19.sylabs.1%{?dist} +License: GPLv2+ +Group: System Environment/Base +URL: http://squashfs.sourceforge.net/ +Source0: http://downloads.sourceforge.net/squashfs/squashfs%{version}.tar.gz +# manpages from http://ftp.debian.org/debian/pool/main/s/squashfs-tools/squashfs-tools_4.2+20121212-1.debian.tar.xz +# The man pages have been modified for 4.3 for Fedora. +Source1: mksquashfs.1 +Source2: unsquashfs.1 +# From master branch (55f7ba830d40d438f0b0663a505e0c227fc68b6b). +# 32 bit process can use too much memory when using PAE or 64 bit kernels +Patch0: PAE.patch +# From master branch (604b607d8ac91eb8afc0b6e3d917d5c073096103). +# Prevent overflows when using the -mem option. +Patch1: mem-overflow.patch +# From squashfs-devel@lists.sourceforge.net by Guan Xin +# For https://bugzilla.redhat.com/show_bug.cgi?id=1141206 +Patch2: 2gb.patch +# From https://github.com/gcanalesb/sasquatch/commit/6777e08cc38bc780d27c69c1d8c272867b74524f +# Which is forked from Phillip's squashfs-tools, though it looks like +# the issue applies to us. +Patch3: cve-2015-4645.patch +# Update formats to match changes in cve-2015-4645.patch +Patch4: local-cve-fix.patch +# rhbz 1611746 +Patch5: mksquashfs-sysmacros-fix.patch +# rhbz 1602698 +Patch6: bz1602698.patch +# rhbz 1624173 +Patch7: bz1624173.patch +# rhbz 1716278 +Patch8: bz1716278.patch +# SYLABS - finalization patch https://github.com/plougher/squashfs-tools/commit/de03266983ceb62e5365aac84fcd3b2fd4d16e6f +Patch9: finalize.patch + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +BuildRequires: zlib-devel +BuildRequires: xz-devel +BuildRequires: lzo-devel +BuildRequires: libattr-devel +BuildRequires: lz4-devel + +%description +Squashfs is a highly compressed read-only filesystem for Linux. This package +contains the utilities for manipulating squashfs filesystems. + +%prep +%setup -q -n squashfs%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p0 +%patch3 -p1 +%patch4 -p0 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 + +%build +pushd squashfs-tools +CFLAGS="%{optflags}" XZ_SUPPORT=1 LZO_SUPPORT=1 LZMA_XZ_SUPPORT=1 LZ4_SUPPORT=1 make %{?_smp_mflags} + +%install +mkdir -p %{buildroot}%{_sbindir} %{buildroot}%{_mandir}/man1 +install -m 755 squashfs-tools/mksquashfs %{buildroot}%{_sbindir}/mksquashfs +install -m 755 squashfs-tools/unsquashfs %{buildroot}%{_sbindir}/unsquashfs +install -m 644 %{SOURCE1} %{buildroot}%{_mandir}/man1/mksquashfs.1 +install -m 644 %{SOURCE2} %{buildroot}%{_mandir}/man1/unsquashfs.1 + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root,-) +%doc README ACKNOWLEDGEMENTS DONATIONS PERFORMANCE.README README-4.3 CHANGES pseudo-file.example COPYING + +%doc README +%{_mandir}/man1/* + +%{_sbindir}/mksquashfs +%{_sbindir}/unsquashfs + +%changelog +* Mon Dec 07 2020 David Trudgian - 4.3-19.sylabs.1 +- Apply finalization race patch. + +* Tue Aug 06 2019 Abhi Das - 4.3-19 +- rhbz#1602698 - Fix coverity issues + rhbz#1624173 - Fix annocheck failures + rhbz#1716278 - limit max cpus in mksquashfs + Resolves: rhbz#1602698, rhbz#1624173, rhbz#1716278 + +* Tue Aug 06 2019 Abhi Das - 4.3-18 +- Add manual gating test + Resolves: rhbz#1682413 + +* Mon Aug 20 2018 Josh Boyer - 4.3-17 +- Fix build against glibc 2.28 + Resolves: rhbz#1611746 + +* Fri Feb 09 2018 Fedora Release Engineering - 4.3-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 4.3-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 4.3-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 4.3-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Feb 05 2016 Fedora Release Engineering - 4.3-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 23 2015 Bruno Wolff III - 4.3-10 +- Fix for CVE 2015-4645/4646 + +* Fri Jun 19 2015 Fedora Release Engineering - 4.3-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Sep 13 2014 Bruno Wolff III 4.3-8 +- Fix for files >= 2gb rhbz #1141206 + +* Mon Aug 18 2014 Fedora Release Engineering - 4.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 13 2014 Bruno Wolff III 4.3-6 +- Apply a couple of upstream patches. +- Fixes issue issue with too much memory use under PAE kernels + +* Sun Jun 08 2014 Fedora Release Engineering - 4.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 14 2014 Bruno Wolff III 4.3-4 +- Even more man page fixes + +* Wed May 14 2014 Bruno Wolff III 4.3-3 +- More mksquashfs man page fixes + +* Tue May 13 2014 Bruno Wolff III 4.3-2 +- Add missed option to the mksquashfs man page + +* Tue May 13 2014 Bruno Wolff III 4.3-1 +- Update to real 4.3 release +- Added support for lz4 since the stable snapshot +- Added support for alternate zlib compression strategies + +* Sun Aug 04 2013 Fedora Release Engineering - 4.3-0.19.gitaae0aff4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Jun 22 2013 Bruno Wolff III - 4.3-0.18.gitaae0aff4 +- Latest pre 4.3 stable snapshot +- A few minor bug fixes +- Improvements in getting status info while running unsquashfs + +* Tue Jun 04 2013 Bruno Wolff III - 4.3-0.17.git5c6f0024 +- Latest pre 4.3 snapshot +- Includes fix for mksquashfs hangs +- Switch to get pre-release updates from the stable branch at kernel.org + +* Thu May 23 2013 Bruno Wolff III - 4.3-0.16.git84d8ae5c +- Latest pre 4.3 snapshot +- Fix for a rare race condition + +* Sun May 19 2013 Bruno Wolff III - 4.3-0.15.git27d7c14b +- Latest pre 4.3 snapshot +- queue fragment and empty file buffers directly to main thread + +* Wed May 15 2013 Bruno Wolff III - 4.3-0.14.git8ce5585e +- Latest pre 4.3 snapshot +- Includes upstream bugfix introduced with the sequential queue change + +* Sat May 11 2013 Bruno Wolff III - 4.3-0.13.gitc2362556 +- Latest pre 4.3 snapshot +- Sequential queue change + +* Mon May 06 2013 Bruno Wolff III - 4.3-0.12.git9353c998 +- Latest pre 4.3 snapshot + +* Sun Mar 31 2013 Bruno Wolff III - 4.3-0.11.git8228a3e8 +- Latest pre 4.3 snapshot +- SIGQUIT now displays the file being squashed + +* Wed Mar 06 2013 Bruno Wolff III - 4.3-0.10.git6a103792 +- Latest pre 4.3 snapshot +- Pick up some more error handling improvements + +* Sun Mar 03 2013 Kyle McMartin +- Move mksquashfs to /usr/sbin, as per UsrMove. + +* Sun Mar 03 2013 Kyle McMartin +- Add mksquashfs.1 and unsquashfs.1 manpages from Debian. + +* Mon Feb 18 2013 Bruno Wolff III - 4.3-0.9.git3ec9c8f7 +- Latest pre 4.3 snapshot +- Better error handling when space runs out + +* Wed Feb 13 2013 Bruno Wolff III - 4.3-0.8.gitca6a1c90 +- Latest pre 4.3 snapshot +- New option to display compression options used +- Some error message improvements + +* Fri Feb 01 2013 Bruno Wolff III - 4.3-0.7.gitb10063a9 +- Latest pre 4.3 snapshot +- More checks for bad data + +* Sun Jan 13 2013 Bruno Wolff III - 4.3-0.6.git6c0f229d +- Latest pre 4.3 snapshot +- Quote and backslash parsing for lexical analyzer + +* Mon Dec 31 2012 Bruno Wolff III - 4.3-0.5.gitc11af515 +- Latest pre 4.3 snapshot +- A few memory leak fixes +- Additional checks for handling bad data + +* Sun Dec 23 2012 Bruno Wolff III - 4.3-0.4.git99a009c8 +- Better checking of data in psuedo files + +* Fri Dec 21 2012 Bruno Wolff III - 4.3-0.3.git7ec6bd7a +- Better checking of data in sort, extract and exclude files + +* Thu Dec 13 2012 Bruno Wolff III - 4.3-0.2.git54719971 +- Pick up a few more changes to better handle bad data + +* Sat Dec 01 2012 Bruno Wolff III - 4.3-0.1.git0be606be +- Pre-release of 4.3 to get early testing +- This update includes a bit of internal code infrastructure changes +- There are lots of fixes to better handle bad data +- The final release is expected sometime in December +- Until the release only the README doc file is available + +* Sun Nov 25 2012 Bruno Wolff III - 4.2-5 +- Backported fix for bz 842460 (CVE-2012-4025) + +* Thu Nov 22 2012 Bruno Wolff III - 4.2-4 +- Backported fix for bz 842458 (CVE-2012-4024) + +* Sat Jul 21 2012 Fedora Release Engineering - 4.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jan 14 2012 Fedora Release Engineering - 4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Mar 01 2011 Bruno Wolff III - 4.2-1 +- 4.2 is released. +- Bugfix for bad data causing crash. +- Include doc files added for release. +- Big endian patch is now upstream. +- Buildroot tag isn't needed any more. +- We can now specify CFLAGS on the make call. +- Compressor options are now passed with the make call. + +* Wed Feb 09 2011 Fedora Release Engineering - 4.2-0.4.20101231 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Jan 11 2011 Dan Horák - 4.2-0.3.20101231 +- Add fixes for big-endian machines + +* Sat Jan 01 2011 Bruno Wolff III - 4.2-0.2.20101231 +- Pull latest upstream snapshot +- Includes check for matching compression type when adding to an existing image +- Sample cvs command now includes timezone and specifies when on the date to use for the snapshot + +* Fri Dec 24 2010 Bruno Wolff III - 4.2-0.1.20101223 +- Switch to 4.2 development snapshot to get new XZ support +- LZMA and XZ (LZMA2) support are now different + +* Wed Oct 27 2010 Bruno Wolff III - 4.1-3 +- Rebuild for xz soname bump + +* Wed Sep 29 2010 jkeating - 4.1-2 +- Rebuilt for gcc bug 634757 + +* Tue Sep 21 2010 Bruno Wolff III - 4.1-1 +- Update to 4.1 final. +- Byte swap patch is now upstream. +- LZO compression type is now supported. + +* Mon Sep 6 2010 Dan Horák - 4.1-0.5.20100827 +- Add fixes for big-endian machines + +* Sat Aug 28 2010 Bruno Wolff III - 4.1-0.4.20100827 +- Rebase to latest upstream. +- The main reason is to pick up a fix for large xattr similar to the large inode fix. This doesn't need to get backported as 4.0 doesn't have xattr support. +- An option was added to build without xattr support. +- Various source cleanups have been done as well. + +* Tue Aug 03 2010 Bruno Wolff III - 4.1-0.3.20100803 +- Rebase to latest upstream +- Prevent warning message for xattr for virtual directory +- Fix issue with large inodes - BZ 619020 + +* Tue Jul 27 2010 Bruno Wolff III - 4.1-0.2.20100727 +- Rebase to latest upstream devel state. Mostly xattr fixes and cleanup. + +* Tue Jun 08 2010 Bruno Wolff III - 4.1-0.1.20100607 +- Rebase to 4.1 prerelease with xz wrapper +- Provides lzma compression as an option. +- squashfs-fix-unsquashing-v3.patch is part of the 4.1 prerelease + +* Wed May 5 2010 Kyle McMartin 4.0-4 +- squashfs-fix-unsquashing-v3.patch: pull in fix from cvs. Thanks pkl! + (rhbz#523504) + +* Thu Feb 18 2010 Kyle McMartin 4.0-3 +- Update to release tarball as opposed to cvs snapshot. +- Add dist tag. + +* Sun Jul 26 2009 Fedora Release Engineering - 4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Sun Apr 05 2009 Kyle McMartin - 4.0-1 +- Update to release 4.0 + +* Mon Mar 16 2009 Kyle McMartin - 4.0-0.20090316 +- update to cvs snap from 2009-03-16. + +* Wed Feb 25 2009 Fedora Release Engineering - 4.0-0.20090126 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Jan 26 2009 Kyle McMartin - 4.0-0.20090125 +- update to cvs snap that should unbreak big endian machines creating + little endian fs. + +* Mon Jan 12 2009 - 4.0-0.20090112 +- update to cvs snap that generates v4.0 images + +* Tue Sep 30 2008 Jeremy Katz - 3.4-1 +- update to 3.4 + +* Tue Feb 19 2008 Fedora Release Engineering - 3.3-2 +- Autorebuild for GCC 4.3 + +* Fri Dec 14 2007 Jeremy Katz - 3.3-1 +- Update to 3.3 + +* Wed Sep 5 2007 Jeremy Katz - 3.2-2 +- fixes from package review (#226430) + +* Tue Mar 20 2007 Jeremy Katz - 3.2-1 +- update to 3.2r2 + +* Sun Oct 01 2006 Jesse Keating - 3.0-4 +- rebuilt for unwind info generation, broken in gcc-4.1.1-21 + +* Mon Sep 18 2006 Jeremy Katz - 3.0-3 +- updated fragment size patch (#204638) + +* Wed Aug 16 2006 Jeremy Katz - 3.0-2 +- add upstream patch for fragment size problem (#202663) + +* Wed Jul 12 2006 Jesse Keating - 3.0-1.1 +- rebuild + +* Fri Jun 23 2006 Jeremy Katz - 3.0-1 +- update to 3.0 +- include unsquashfs + +* Tue May 16 2006 Jeremy Katz +- add BR on zlib-devel (Andreas Thienemann, #191880) + +* Fri Feb 10 2006 Jesse Keating - 2.2r2-2.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 2.2r2-2.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Dec 1 2005 Jeremy Katz - 2.2r2-1 +- Initial build +