From 9f8ac346ec0d4a43fa0ef0836ab789f2f145b2ad Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Thu, 6 Jun 2019 18:58:10 -0400 Subject: [PATCH] app-arch/bzip2: import Gentoo's latest stable version --- .../coreos-overlay/app-arch/bzip2/Manifest | 1 + .../app-arch/bzip2/bzip2-1.0.6-r11.ebuild | 118 +++++++++++++ .../bzip2/files/bzip2-1.0.3-no-test.patch | 9 + .../bzip2/files/bzip2-1.0.4-POSIX-shell.patch | 21 +++ .../files/bzip2-1.0.4-makefile-CFLAGS.patch | 25 +++ .../bzip2/files/bzip2-1.0.4-man-links.patch | 12 ++ .../files/bzip2-1.0.6-CVE-2016-3189.patch | 18 ++ .../bzip2/files/bzip2-1.0.6-mingw.patch | 27 +++ ...2-1.0.6-nselectors-upper-bound-check.patch | 30 ++++ .../files/bzip2-1.0.6-out-of-tree-build.patch | 79 +++++++++ .../bzip2/files/bzip2-1.0.6-progress.patch | 163 ++++++++++++++++++ .../bzip2/files/bzip2-1.0.6-saneso.patch | 13 ++ .../bzip2/files/bzip2-1.0.6-ubsan-error.patch | 24 +++ .../app-arch/bzip2/metadata.xml | 11 ++ 14 files changed, 551 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/Manifest create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/bzip2-1.0.6-r11.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.3-no-test.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-POSIX-shell.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-makefile-CFLAGS.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-man-links.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-CVE-2016-3189.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-mingw.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-nselectors-upper-bound-check.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-out-of-tree-build.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-progress.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-saneso.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/metadata.xml diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/Manifest b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/Manifest new file mode 100644 index 0000000000..4db66c194b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/Manifest @@ -0,0 +1 @@ +DIST bzip2-1.0.6.tar.gz 782025 BLAKE2B b31533af7c71d715e6600874bb0a11b9b3aebbb08af0414a6d88bd5a2ad879a482ad408338159cb6c241815da8f48798d2ea7789ea971431d0be42ee827b0a7e SHA512 00ace5438cfa0c577e5f578d8a808613187eff5217c35164ffe044fbafdfec9e98f4192c02a7d67e01e5a5ccced630583ad1003c37697219b0f147343a3fdd12 diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/bzip2-1.0.6-r11.ebuild b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/bzip2-1.0.6-r11.ebuild new file mode 100644 index 0000000000..0bad400bb1 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/bzip2-1.0.6-r11.ebuild @@ -0,0 +1,118 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# XXX: atm, libbz2.a is always PIC :(, so it is always built quickly +# (since we're building shared libs) ... + +EAPI=6 + +inherit toolchain-funcs multilib-minimal + +DESCRIPTION="A high-quality data compressor used extensively by Gentoo Linux" +HOMEPAGE="https://sourceware.org/bzip2/" +SRC_URI="mirror://gentoo/${P}.tar.gz" + +LICENSE="BZIP2" +SLOT="0/1" # subslot = SONAME +KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd" +IUSE="static static-libs" + +PATCHES=( + "${FILESDIR}"/${PN}-1.0.4-makefile-CFLAGS.patch + "${FILESDIR}"/${PN}-1.0.6-saneso.patch + "${FILESDIR}"/${PN}-1.0.4-man-links.patch #172986 + "${FILESDIR}"/${PN}-1.0.6-progress.patch + "${FILESDIR}"/${PN}-1.0.3-no-test.patch + "${FILESDIR}"/${PN}-1.0.4-POSIX-shell.patch #193365 + "${FILESDIR}"/${PN}-1.0.6-mingw.patch #393573 + "${FILESDIR}"/${PN}-1.0.6-out-of-tree-build.patch + "${FILESDIR}"/${PN}-1.0.6-CVE-2016-3189.patch #620466 + "${FILESDIR}"/${PN}-1.0.6-ubsan-error.patch + "${FILESDIR}"/${PN}-1.0.6-nselectors-upper-bound-check.patch +) + +DOCS=( CHANGES README{,.COMPILATION.PROBLEMS,.XML.STUFF} manual.pdf ) +HTML_DOCS=( manual.html ) + +src_prepare() { + default + + # - Use right man path + # - Generate symlinks instead of hardlinks + # - pass custom variables to control libdir + sed -i \ + -e 's:\$(PREFIX)/man:\$(PREFIX)/share/man:g' \ + -e 's:ln -s -f $(PREFIX)/bin/:ln -s -f :' \ + -e 's:$(PREFIX)/lib:$(PREFIX)/$(LIBDIR):g' \ + Makefile || die +} + +bemake() { + emake \ + VPATH="${S}" \ + CC="$(tc-getCC)" \ + AR="$(tc-getAR)" \ + RANLIB="$(tc-getRANLIB)" \ + "$@" +} + +multilib_src_compile() { + bemake -f "${S}"/Makefile-libbz2_so all + # Make sure we link against the shared lib #504648 + ln -s libbz2.so.${PV} libbz2.so || die + bemake -f "${S}"/Makefile all LDFLAGS="${LDFLAGS} $(usex static -static '')" +} + +multilib_src_install() { + into /usr + + # Install the shared lib manually. We install: + # .x.x.x - standard shared lib behavior + # .x.x - SONAME some distros use #338321 + # .x - SONAME Gentoo uses + dolib.so libbz2.so.${PV} + local v + for v in libbz2.so{,.{${PV%%.*},${PV%.*}}} ; do + dosym libbz2.so.${PV} /usr/$(get_libdir)/${v} + done + use static-libs && dolib.a libbz2.a + + if multilib_is_native_abi ; then + gen_usr_ldscript -a bz2 + + dobin bzip2recover + into / + dobin bzip2 + fi +} + +multilib_src_install_all() { + # `make install` doesn't cope with out-of-tree builds, nor with + # installing just non-binaries, so handle things ourselves. + insinto /usr/include + doins bzlib.h + into /usr + dobin bz{diff,grep,more} + doman *.1 + + dosym bzdiff /usr/bin/bzcmp + dosym bzdiff.1 /usr/share/man/man1/bzcmp.1 + + dosym bzmore /usr/bin/bzless + dosym bzmore.1 /usr/share/man/man1/bzless.1 + + local x + for x in bunzip2 bzcat bzip2recover ; do + dosym bzip2.1 /usr/share/man/man1/${x}.1 + done + for x in bz{e,f}grep ; do + dosym bzgrep /usr/bin/${x} + dosym bzgrep.1 /usr/share/man/man1/${x}.1 + done + + einstalldocs + + # move "important" bzip2 binaries to /bin and use the shared libbz2.so + dosym bzip2 /bin/bzcat + dosym bzip2 /bin/bunzip2 +} diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.3-no-test.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.3-no-test.patch new file mode 100644 index 0000000000..9e554f7951 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.3-no-test.patch @@ -0,0 +1,9 @@ +--- a/Makefile ++++ b/Makefile +@@ -23,5 +23,5 @@ + bzlib.o + +-all: libbz2.a bzip2 bzip2recover test ++all: libbz2.a bzip2 bzip2recover + + bzip2: libbz2.a bzip2.o diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-POSIX-shell.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-POSIX-shell.patch new file mode 100644 index 0000000000..74f8df000b --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-POSIX-shell.patch @@ -0,0 +1,21 @@ +bzgrep uses !/bin/sh but then uses the bashism ${var//} so replace those +with calls to sed so POSIX shells work + +http://bugs.gentoo.org/193365 + +--- a/bzgrep ++++ b/bzgrep +@@ -63,10 +63,9 @@ + bzip2 -cdfq "$i" | $grep $opt "$pat" + r=$? + else +- j=${i//\\/\\\\} +- j=${j//|/\\|} +- j=${j//&/\\&} +- j=`printf "%s" "$j" | tr '\n' ' '` ++ # the backslashes here are doubled up as we have to escape each one for the ++ # shell and then escape each one for the sed expression ++ j=`printf "%s" "${i}" | sed -e 's:\\\\:\\\\\\\\:g' -e 's:[|]:\\\\|:g' -e 's:[&]:\\\\&:g' | tr '\n' ' '` + bzip2 -cdfq "$i" | $grep $opt "$pat" | sed "s|^|${j}:|" + r=$? + fi diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-makefile-CFLAGS.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-makefile-CFLAGS.patch new file mode 100644 index 0000000000..04bd0d9abd --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-makefile-CFLAGS.patch @@ -0,0 +1,25 @@ +--- a/Makefile ++++ b/Makefile +@@ -18,10 +18,9 @@ + CC=gcc + AR=ar + RANLIB=ranlib +-LDFLAGS= + + BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++CFLAGS+=-Wall -Winline $(BIGFILES) $(CPPFLAGS) + + # Where you want it installed when you do 'make install' + PREFIX=/usr/local +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -24,7 +24,7 @@ + SHELL=/bin/sh + CC=gcc + BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) ++CFLAGS+=-fpic -fPIC -Wall -Winline $(BIGFILES) $(CPPFLAGS) + + OBJS= blocksort.o \ + huffman.o \ diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-man-links.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-man-links.patch new file mode 100644 index 0000000000..deaa981adc --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.4-man-links.patch @@ -0,0 +1,12 @@ +http://bugs.gentoo.org/172986 + +--- a/Makefile ++++ b/Makefile +@@ -85,4 +85,7 @@ + cp -f bzip2.1 $(PREFIX)/share/man/man1 + chmod a+r $(PREFIX)/share/man/man1/bzip2.1 ++ ln -s -f bzip2.1 $(PREFIX)/share/man/man1/bunzip2.1 ++ ln -s -f bzip2.1 $(PREFIX)/share/man/man1/bzcat.1 ++ ln -s -f bzip2.1 $(PREFIX)/share/man/man1/bzip2recover.1 + cp -f bzlib.h $(PREFIX)/include + chmod a+r $(PREFIX)/include/bzlib.h diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-CVE-2016-3189.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-CVE-2016-3189.patch new file mode 100644 index 0000000000..b031c808fe --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-CVE-2016-3189.patch @@ -0,0 +1,18 @@ +Upstream-Status: Backport +https://bugzilla.suse.com/attachment.cgi?id=681334 + +CVE: CVE-2016-3189 +Signed-off-by: Armin Kuster + +Index: bzip2-1.0.6/bzip2recover.c +=================================================================== +--- a/bzip2recover.c ++++ b/bzip2recover.c +@@ -457,6 +457,7 @@ Int32 main ( Int32 argc, Char** argv ) + bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 ); + bsPutUInt32 ( bsWr, blockCRC ); + bsClose ( bsWr ); ++ outFile = NULL; + } + if (wrBlock >= rbCtr) break; + wrBlock++; diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-mingw.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-mingw.patch new file mode 100644 index 0000000000..51469ca4c9 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-mingw.patch @@ -0,0 +1,27 @@ +make it build for mingw targets + +https://bugs.gentoo.org/393573 + +--- a/bzip2.c ++++ b/bzip2.c +@@ -129,7 +129,7 @@ + #if BZ_LCCWIN32 + # include + # include +-# include ++# include + + # define NORETURN /**/ + # define PATH_SEP '\\' +--- a/bzlib.h ++++ b/bzlib.h +@@ -81,6 +81,9 @@ typedef + /* windows.h define small to char */ + # undef small + # endif ++# ifndef WINAPI ++# define WINAPI ++# endif + # ifdef BZ_EXPORT + # define BZ_API(func) WINAPI func + # define BZ_EXTERN extern diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-nselectors-upper-bound-check.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-nselectors-upper-bound-check.patch new file mode 100644 index 0000000000..a7731f7de8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-nselectors-upper-bound-check.patch @@ -0,0 +1,30 @@ +From 13ca8fee0c897121ae79ae644a212418398dfea7 Mon Sep 17 00:00:00 2001 +From: Amin Hassani +Date: Fri, 8 Mar 2019 09:58:20 -0800 +Subject: [PATCH] Check for upper bounds of nselectors. + +Currently there is no check for the upper bounds of the +nselectors. Hence, a corrupt input can cause a segfault. + +This issue was discovered by one of our fuzzers. The actual error was: + +../bzip2-1.0.6/decompress.c:299:10: runtime error: index 18002 out of bounds for type 'UChar [18002]' +--- + decompress.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/decompress.c b/decompress.c +index 311f566..391552d 100644 +--- a/decompress.c ++++ b/decompress.c +@@ -288,6 +288,7 @@ Int32 BZ2_decompress ( DState* s ) + if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); + GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); + if (nSelectors < 1) RETURN(BZ_DATA_ERROR); ++ if (nSelectors > BZ_MAX_SELECTORS) RETURN(BZ_DATA_ERROR); + for (i = 0; i < nSelectors; i++) { + j = 0; + while (True) { +-- +2.21.0.360.g471c308f928-goog + diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-out-of-tree-build.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-out-of-tree-build.patch new file mode 100644 index 0000000000..806339ebb6 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-out-of-tree-build.patch @@ -0,0 +1,79 @@ +--- a/Makefile ++++ b/Makefile +@@ -53,7 +53,6 @@ libbz2.a: $(OBJS) + + check: test + test: bzip2 +- @cat words1 + ./bzip2 -1 < sample1.ref > sample1.rb2 + ./bzip2 -2 < sample2.ref > sample2.rb2 + ./bzip2 -3 < sample3.ref > sample3.rb2 +@@ -66,7 +65,6 @@ test: bzip2 + cmp sample1.tst sample1.ref + cmp sample2.tst sample2.ref + cmp sample3.tst sample3.ref +- @cat words3 + + install: bzip2 bzip2recover + if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi +@@ -115,25 +113,8 @@ clean: + sample1.rb2 sample2.rb2 sample3.rb2 \ + sample1.tst sample2.tst sample3.tst + +-blocksort.o: blocksort.c +- @cat words0 +- $(CC) $(CFLAGS) -c blocksort.c +-huffman.o: huffman.c +- $(CC) $(CFLAGS) -c huffman.c +-crctable.o: crctable.c +- $(CC) $(CFLAGS) -c crctable.c +-randtable.o: randtable.c +- $(CC) $(CFLAGS) -c randtable.c +-compress.o: compress.c +- $(CC) $(CFLAGS) -c compress.c +-decompress.o: decompress.c +- $(CC) $(CFLAGS) -c decompress.c +-bzlib.o: bzlib.c +- $(CC) $(CFLAGS) -c bzlib.c +-bzip2.o: bzip2.c +- $(CC) $(CFLAGS) -c bzip2.c +-bzip2recover.o: bzip2recover.c +- $(CC) $(CFLAGS) -c bzip2recover.c ++%.o: %.c ++ $(CC) $(CFLAGS) -c $< + + + distclean: clean +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -36,9 +36,7 @@ OBJS= blocksort.o \ + + all: $(OBJS) + $(CC) $(LDFLAGS) -shared -Wl,-soname -Wl,libbz2.so.1 -o libbz2.so.1.0.6 $(OBJS) +- $(CC) $(LDFLAGS) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 +- rm -f libbz2.so.1.0 +- ln -s libbz2.so.1.0.6 libbz2.so.1.0 ++ ln -sf libbz2.so.1.0.6 libbz2.so.1.0 + + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared +@@ -43,17 +43,5 @@ all: $(OBJS) + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared + +-blocksort.o: blocksort.c +- $(CC) $(CFLAGS) -c blocksort.c +-huffman.o: huffman.c +- $(CC) $(CFLAGS) -c huffman.c +-crctable.o: crctable.c +- $(CC) $(CFLAGS) -c crctable.c +-randtable.o: randtable.c +- $(CC) $(CFLAGS) -c randtable.c +-compress.o: compress.c +- $(CC) $(CFLAGS) -c compress.c +-decompress.o: decompress.c +- $(CC) $(CFLAGS) -c decompress.c +-bzlib.o: bzlib.c +- $(CC) $(CFLAGS) -c bzlib.c ++%.o: %.c ++ $(CC) $(CFLAGS) -c $< diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-progress.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-progress.patch new file mode 100644 index 0000000000..8369597714 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-progress.patch @@ -0,0 +1,163 @@ +Ripped from Mandrake + +http://bugs.gentoo.org/82192 + +--- a/bzip2.1 ++++ b/bzip2.1 +@@ -235,6 +235,10 @@ + Suppress non-essential warning messages. Messages pertaining to + I/O errors and other critical events will not be suppressed. + .TP ++.B \-p \-\-show\-progress ++Show percentage of input\-file done and while compressing show the percentage ++of the original file the new file is. ++.TP + .B \-v --verbose + Verbose mode -- show the compression ratio for each file processed. + Further \-v's increase the verbosity level, spewing out lots of +--- a/bzip2.c ++++ b/bzip2.c +@@ -145,6 +145,7 @@ + #include + #include + #include ++#include + #include + #include "bzlib.h" + +@@ -301,6 +302,7 @@ + Char progNameReally[FILE_NAME_LEN]; + FILE *outputHandleJustInCase; + Int32 workFactor; ++Char showProgress; + + static void panic ( Char* ) NORETURN; + static void ioError ( void ) NORETURN; +@@ -425,6 +427,12 @@ + UInt32 nbytes_in_lo32, nbytes_in_hi32; + UInt32 nbytes_out_lo32, nbytes_out_hi32; + Int32 bzerr, bzerr_dummy, ret; ++ double fileSize = 0; /* initialized to make the compiler stop crying */ ++ /* double because big files might otherwhise give ++ * overflows. not long long since not all compilers ++ * support that one ++ */ ++ time_t startTime, currentTime; + + SET_BINARY_MODE(stream); + SET_BINARY_MODE(zStream); +@@ -432,12 +440,21 @@ + if (ferror(stream)) goto errhandler_io; + if (ferror(zStream)) goto errhandler_io; + ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ (void)fseek(stream, 0, SEEK_END); ++ fileSize = ftello(stream); ++ rewind(stream); ++ if (verbosity >= 1) ++ fprintf(stderr, "Input-file size: %ld\n", (long)fileSize); ++ } ++ + bzf = BZ2_bzWriteOpen ( &bzerr, zStream, + blockSize100k, verbosity, workFactor ); + if (bzerr != BZ_OK) goto errhandler; + + if (verbosity >= 2) fprintf ( stderr, "\n" ); + ++ time(&startTime); + while (True) { + + if (myfeof(stream)) break; +@@ -446,6 +463,22 @@ + if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf ); + if (bzerr != BZ_OK) goto errhandler; + ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ time(¤tTime); ++ ++ if ((currentTime - startTime) > 1) { /* show progress every 2 seconds */ ++ double curInPos = ftello(stream); ++ double curOutPos = ftello(zStream); ++ ++ startTime = currentTime; ++ ++ fprintf(stderr, "%.2f%% done", (curInPos * 100.0) / fileSize); ++ if (srcMode == SM_F2F) ++ fprintf(stderr, ", new size: %.2f%%", (curOutPos * 100.0) / curInPos); ++ ++ fprintf(stderr, " \r"); ++ } ++ } + } + + BZ2_bzWriteClose64 ( &bzerr, bzf, 0, +@@ -526,6 +559,8 @@ + UChar unused[BZ_MAX_UNUSED]; + Int32 nUnused; + UChar* unusedTmp; ++ double fileSize = 0; /* initialized to make the compiler stop crying */ ++ time_t startTime, currentTime; + + nUnused = 0; + streamNo = 0; +@@ -533,9 +568,19 @@ + SET_BINARY_MODE(stream); + SET_BINARY_MODE(zStream); + ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ off_t dummy = ftello(zStream); ++ (void)fseeko(zStream, 0, SEEK_END); ++ fileSize = ftello(zStream); ++ (void)fseeko(zStream, dummy, SEEK_SET); ++ if (verbosity >= 1) ++ fprintf(stderr, "Input-file size: %ld\n", (long)fileSize); ++ } ++ + if (ferror(stream)) goto errhandler_io; + if (ferror(zStream)) goto errhandler_io; + ++ time(&startTime); + while (True) { + + bzf = BZ2_bzReadOpen ( +@@ -551,6 +596,16 @@ + if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0) + fwrite ( obuf, sizeof(UChar), nread, stream ); + if (ferror(stream)) goto errhandler_io; ++ ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ time(¤tTime); ++ if ((currentTime - startTime) >= 2) { ++ double curInPos = ftello(zStream); ++ startTime = currentTime; ++ ++ fprintf(stderr, "%.2f%% done\r", (curInPos * 100.0) / fileSize); ++ } ++ } + } + if (bzerr != BZ_STREAM_END) goto errhandler; + +@@ -1872,6 +1927,7 @@ + deleteOutputOnInterrupt = False; + exitValue = 0; + i = j = 0; /* avoid bogus warning from egcs-1.1.X */ ++ showProgress = False; + + /*-- Set up signal handlers for mem access errors --*/ + signal (SIGSEGV, mySIGSEGVorSIGBUScatcher); +@@ -1949,6 +2005,7 @@ + case 'k': keepInputFiles = True; break; + case 's': smallMode = True; break; + case 'q': noisy = False; break; ++ case 'p': showProgress = True; break; + case '1': blockSize100k = 1; break; + case '2': blockSize100k = 2; break; + case '3': blockSize100k = 3; break; +@@ -1985,6 +2042,7 @@ + if (ISFLAG("--keep")) keepInputFiles = True; else + if (ISFLAG("--small")) smallMode = True; else + if (ISFLAG("--quiet")) noisy = False; else ++ if (ISFLAG("--show-progress")) showProgress = True; else + if (ISFLAG("--version")) license(); else + if (ISFLAG("--license")) license(); else + if (ISFLAG("--exponential")) workFactor = 1; else diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-saneso.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-saneso.patch new file mode 100644 index 0000000000..52ea791ce3 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-saneso.patch @@ -0,0 +1,13 @@ +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -35,8 +35,8 @@ + bzlib.o + + all: $(OBJS) +- $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) +- $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 ++ $(CC) $(LDFLAGS) -shared -Wl,-soname -Wl,libbz2.so.1 -o libbz2.so.1.0.6 $(OBJS) ++ $(CC) $(LDFLAGS) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 + rm -f libbz2.so.1.0 + ln -s libbz2.so.1.0.6 libbz2.so.1.0 + diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch new file mode 100644 index 0000000000..84b811177e --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch @@ -0,0 +1,24 @@ +Author: Manoj Gupta + +Use unsigned 1 for shifting instead of signed 1. + +This fixed an issue with shift caught by undefined behavior +sanitizer in clang. +bzip2-1.0.6/blocksort.c:255:7 +runtime error: left shift of 1 by 31 places cannot be represented in type 'int' + +--- a/blocksort.c ++++ b/blocksort.c +@@ -202,9 +202,9 @@ void fallbackQSort3 ( UInt32* fmap, + bhtab [ 0 .. 2+(nblock/32) ] destroyed + */ + +-#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) +-#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) +-#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) ++#define SET_BH(zz) bhtab[(zz) >> 5] |= (1u << ((zz) & 31)) ++#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1u << ((zz) & 31)) ++#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1u << ((zz) & 31))) + #define WORD_BH(zz) bhtab[(zz) >> 5] + #define UNALIGNED_BH(zz) ((zz) & 0x01f) + diff --git a/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/metadata.xml b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/metadata.xml new file mode 100644 index 0000000000..83d6d32d00 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/app-arch/bzip2/metadata.xml @@ -0,0 +1,11 @@ + + + + + base-system@gentoo.org + Gentoo Base System + + + cpe:/a:bzip:bzip2 + +