summaryrefslogtreecommitdiff
path: root/patches
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2022-04-14 21:14:21 +0000
committerEric Hameleers <alien@slackware.com>2022-04-15 13:29:52 +0200
commit9e2efe650cfe5bf9113679ba90646e15e551b0e1 (patch)
tree14b7b4ee19badea19ce3f3a1299c26f402025325 /patches
parent799fadd35209d233e88b64218e1f755367bf234b (diff)
downloadcurrent-9e2efe650cfe5bf9113679ba90646e15e551b0e1.tar.gz
Thu Apr 14 21:14:21 UTC 202220220414211421_15.0
patches/packages/git-2.35.3-x86_64-1_slack15.0.txz: Upgraded. This update fixes a security issue where a Git worktree created by another user might be able to execute arbitrary code. For more information, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-24765 (* Security fix *) patches/packages/gzip-1.12-x86_64-1_slack15.0.txz: Upgraded. This update fixes a security issue: zgrep applied to a crafted file name with two or more newlines can no longer overwrite an arbitrary, attacker-selected file. For more information, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1271 (* Security fix *) patches/packages/xz-5.2.5-x86_64-4_slack15.0.txz: Rebuilt. This update fixes a security issue: xzgrep applied to a crafted file name with two or more newlines can no longer overwrite an arbitrary, attacker-selected file. For more information, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1271 (* Security fix *)
Diffstat (limited to 'patches')
-rw-r--r--patches/packages/git-2.35.3-x86_64-1_slack15.0.txt11
-rw-r--r--patches/packages/gzip-1.12-x86_64-1_slack15.0.txt11
-rw-r--r--patches/packages/xz-5.2.5-x86_64-4_slack15.0.txt11
-rwxr-xr-xpatches/source/git/git.SlackBuild185
-rw-r--r--patches/source/git/git.url1
-rw-r--r--patches/source/git/slack-desc19
-rwxr-xr-xpatches/source/gzip/gzip.SlackBuild176
-rw-r--r--patches/source/gzip/slack-desc19
-rw-r--r--patches/source/xz/slack-desc19
-rwxr-xr-xpatches/source/xz/xz.SlackBuild169
-rw-r--r--patches/source/xz/xzgrep-ZDI-CAN-16587.patch94
11 files changed, 715 insertions, 0 deletions
diff --git a/patches/packages/git-2.35.3-x86_64-1_slack15.0.txt b/patches/packages/git-2.35.3-x86_64-1_slack15.0.txt
new file mode 100644
index 00000000..059a95ba
--- /dev/null
+++ b/patches/packages/git-2.35.3-x86_64-1_slack15.0.txt
@@ -0,0 +1,11 @@
+git: git (the stupid content tracker)
+git:
+git: Git is a fast, scalable, distributed revision control system with an
+git: unusually rich command set that provides both high-level operations
+git: and full access to internals.
+git:
+git: "git" can mean anything, depending on your mood.
+git:
+git: Git was originally written by Linus Torvalds and is currently
+git: maintained by Junio C. Hamano.
+git:
diff --git a/patches/packages/gzip-1.12-x86_64-1_slack15.0.txt b/patches/packages/gzip-1.12-x86_64-1_slack15.0.txt
new file mode 100644
index 00000000..39d94caf
--- /dev/null
+++ b/patches/packages/gzip-1.12-x86_64-1_slack15.0.txt
@@ -0,0 +1,11 @@
+gzip: gzip (file compression utility)
+gzip:
+gzip: Gzip reduces the size of the named files using Lempel-Ziv coding
+gzip: (LZ77). Whenever possible, each file is replaced by one with the
+gzip: extension .gz, while keeping the same ownership modes, access and
+gzip: modification times.
+gzip:
+gzip:
+gzip:
+gzip:
+gzip:
diff --git a/patches/packages/xz-5.2.5-x86_64-4_slack15.0.txt b/patches/packages/xz-5.2.5-x86_64-4_slack15.0.txt
new file mode 100644
index 00000000..e99c0a2f
--- /dev/null
+++ b/patches/packages/xz-5.2.5-x86_64-4_slack15.0.txt
@@ -0,0 +1,11 @@
+xz: xz (compression utility based on the LZMA algorithm)
+xz:
+xz: LZMA is a general purpose compression algorithm designed by Igor
+xz: Pavlov as part of 7-Zip. It provides high compression ratio while
+xz: keeping the decompression speed fast. XZ Utils are an attempt to make
+xz: LZMA compression easy to use on free (as in freedom) operating
+xz: systems.
+xz:
+xz: The people most responsible for xz are Igor Pavlov, Ville Koskinen,
+xz: and Lasse Collin. Homepage: http://tukaani.org/xz/
+xz:
diff --git a/patches/source/git/git.SlackBuild b/patches/source/git/git.SlackBuild
new file mode 100755
index 00000000..5ed4b0c6
--- /dev/null
+++ b/patches/source/git/git.SlackBuild
@@ -0,0 +1,185 @@
+#!/bin/bash
+
+# Copyright 2008, 2009, 2010, 2011, 2016, 2018, 2020 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=git
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | cut -d - -f 2 | rev | cut -f 3- -d . | rev)}
+BUILD=${BUILD:-1_slack15.0}
+
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+eval $(perl '-V:installvendorlib')
+PERLDIR=$installvendorlib/$ARCH-linux-thread-multi/auto
+
+if ls /var/log/packages/git-* 1> /dev/null 2> /dev/null ; then
+ echo "The git package needs to be removed before building to ensure that"
+ echo "the perl modules are included in the new package."
+ echo
+ echo "Removing the git package in 15 seconds, and then continuing with the build."
+ sleep 15
+ removepkg git
+fi
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-git
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf git-$VERSION
+tar xvf $CWD/git-$VERSION.tar.?z* || exit 1
+cd git-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+mkdir -p $PKG/usr/doc/git-$VERSION
+cp -a \
+ COPYING* INSTALL README \
+ Documentation \
+ contrib \
+ $PKG/usr/doc/git-$VERSION
+( cd $PKG/usr/doc/git-$VERSION/Documentation ; rm *.1 *.3 *.7 )
+( cd $PKG/usr/doc/git-$VERSION && find . -name ".git*" -exec rm -r "{}" \+ )
+
+mkdir -p $PKG/usr/share/bash-completion/completions
+ln -s /usr/doc/git-$VERSION/contrib/completion/git-completion.bash \
+ $PKG/usr/share/bash-completion/completions/git
+
+make $NUMJOBS \
+ prefix=/usr \
+ mandir=/usr/man \
+ CFLAGS="$SLKCFLAGS" \
+ INSTALLDIRS=vendor \
+ ASCIIDOC8=YesPlease \
+ USE_LIBPCRE2=YesPlease \
+ all doc || exit 1
+
+make \
+ prefix=/usr \
+ mandir=/usr/man \
+ "CFLAGS=$SLKCFLAGS" \
+ INSTALLDIRS=vendor \
+ ASCIIDOC8=YesPlease \
+ USE_LIBPCRE2=YesPlease \
+ install \
+ install-doc \
+ DESTDIR=$PKG || exit 1
+
+mv $PKG/usr/share/man/man3 $PKG/usr/man
+rmdir $PKG/usr/share/man
+
+# Don't stomp on perl's file:
+rm -f $PKG/usr/lib*/perl5/perllocal.pod
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Since Stuart Winter hates hard links. ;-)
+#
+# Switch a hard link with a soft link:
+( cd $PKG/usr/bin
+ find . -links +1 -not -name git | while read gitfile ; do
+ if [ git -ef $gitfile ]; then
+ rm -vf $gitfile
+ ln -vfs git $gitfile
+ fi
+ done
+)
+
+# This removes our DESTDIR from the packlist filenames, to keep perl's
+# internal inventories consistent and correct.
+find $PKG -name .packlist | while read plist ; do
+ sed -e "s%/share/man%/man%g" \
+ -e "s%$PKG%%g" \
+ -e "s%\.1$%\.1\.gz%g" \
+ -e "s%\.2$%\.2\.gz%g" \
+ -e "s%\.3$%\.3\.gz%g" \
+ -e "s%\.3pm$%\.3pm\.gz%g" \
+ -e "s%\.4$%\.4\.gz%g" \
+ -e "s%\.5$%\.5\.gz%g" \
+ -e "s%\.6$%\.6\.gz%g" \
+ -e "s%\.7$%\.7\.gz%g" \
+ -e "s%\.8$%\.8\.gz%g" \
+ ${plist} > ${plist}.new
+ mv -f ${plist}.new ${plist}
+done
+
+# This is junk:
+eval $(perl '-V:privlib')
+( cd $PKG$(dirname $privlib) && rm -rf 5.* )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/git-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/patches/source/git/git.url b/patches/source/git/git.url
new file mode 100644
index 00000000..a4c15db3
--- /dev/null
+++ b/patches/source/git/git.url
@@ -0,0 +1 @@
+https://www.kernel.org/pub/software/scm/git/
diff --git a/patches/source/git/slack-desc b/patches/source/git/slack-desc
new file mode 100644
index 00000000..0e68a383
--- /dev/null
+++ b/patches/source/git/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+git: git (the stupid content tracker)
+git:
+git: Git is a fast, scalable, distributed revision control system with an
+git: unusually rich command set that provides both high-level operations
+git: and full access to internals.
+git:
+git: "git" can mean anything, depending on your mood.
+git:
+git: Git was originally written by Linus Torvalds and is currently
+git: maintained by Junio C. Hamano.
+git:
diff --git a/patches/source/gzip/gzip.SlackBuild b/patches/source/gzip/gzip.SlackBuild
new file mode 100755
index 00000000..275134a3
--- /dev/null
+++ b/patches/source/gzip/gzip.SlackBuild
@@ -0,0 +1,176 @@
+#!/bin/bash
+
+# Copyright 2006-2018 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=gzip
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1_slack15.0}
+
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+# Don't use icecream:
+PATH=$(echo $PATH | sed "s|/usr/libexec/icecc/bin||g" | tr -s : | sed "s/^://g" | sed "s/:$//g")
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.xz || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# The ncompress package already has this:
+rm -f $PKG/bin/uncompress
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Fix locations:
+#( cd $PKG
+ #mkdir bin
+ #mv usr/bin/gzip bin
+ #( cd bin ; rm -rf gunzip )
+ #( cd bin ; ln -sf gzip gunzip )
+ #( cd bin ; rm -rf zcat )
+ #( cd bin ; ln -sf gzip zcat )
+ #( cd usr/bin ; rm -rf gzip )
+ #( cd usr/bin ; ln -sf ../../bin/gzip gzip )
+ #( cd usr/bin ; rm -rf gunzip )
+ #( cd usr/bin ; ln -sf ../../bin/gunzip gunzip )
+ #( cd usr/bin ; rm -rf zcat )
+ #( cd usr/bin ; ln -sf ../../bin/zcat zcat )
+ #( cd usr/bin ; rm -rf zcmp )
+ #( cd usr/bin ; ln -sf zdiff zcmp )
+ #( cd usr/bin ; rm -rf zegrep )
+ #( cd usr/bin ; ln -sf zgrep zegrep )
+ #( cd usr/bin ; rm -rf zfgrep )
+ #( cd usr/bin ; ln -sf zgrep zfgrep )
+#)
+
+mkdir -p $PKG/usr/bin
+( cd $PKG/bin
+ for file in * ; do
+ ( cd $PKG/usr/bin ; ln -sf ../../bin/$file . )
+ done
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING* NEWS README* THANKS TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/patches/source/gzip/slack-desc b/patches/source/gzip/slack-desc
new file mode 100644
index 00000000..38129ab6
--- /dev/null
+++ b/patches/source/gzip/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gzip: gzip (file compression utility)
+gzip:
+gzip: Gzip reduces the size of the named files using Lempel-Ziv coding
+gzip: (LZ77). Whenever possible, each file is replaced by one with the
+gzip: extension .gz, while keeping the same ownership modes, access and
+gzip: modification times.
+gzip:
+gzip:
+gzip:
+gzip:
+gzip:
diff --git a/patches/source/xz/slack-desc b/patches/source/xz/slack-desc
new file mode 100644
index 00000000..30a6bb34
--- /dev/null
+++ b/patches/source/xz/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xz: xz (compression utility based on the LZMA algorithm)
+xz:
+xz: LZMA is a general purpose compression algorithm designed by Igor
+xz: Pavlov as part of 7-Zip. It provides high compression ratio while
+xz: keeping the decompression speed fast. XZ Utils are an attempt to make
+xz: LZMA compression easy to use on free (as in freedom) operating
+xz: systems.
+xz:
+xz: The people most responsible for xz are Igor Pavlov, Ville Koskinen,
+xz: and Lasse Collin. Homepage: http://tukaani.org/xz/
+xz:
diff --git a/patches/source/xz/xz.SlackBuild b/patches/source/xz/xz.SlackBuild
new file mode 100755
index 00000000..66e70e3e
--- /dev/null
+++ b/patches/source/xz/xz.SlackBuild
@@ -0,0 +1,169 @@
+#!/bin/bash
+
+# Copyright 2009, 2010, 2011, 2012, 2018 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=xz
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-4_slack15.0}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) export ARCH=i586 ;;
+ arm*) export ARCH=arm ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) export ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+case "$ARCH" in
+ i586) SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+ ;;
+ s390) SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ;;
+ powerpc) SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ;;
+ x86_64) SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+ ;;
+ athlon-xp) SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
+ LIBDIRSUFFIX=""
+ ;;
+ arm) SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+ ;;
+ armel) SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+ ;;
+ *) SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ;;
+esac
+
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+cd $PKGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+cat $CWD/xzgrep-ZDI-CAN-16587.patch | patch -p1 --verbose || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --docdir=/usr/doc/xz-$VERSION \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --enable-shared \
+ --disable-static \
+ --disable-rpath \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux || exit 1
+
+make $NUMJOBS || make || exit 1
+make DESTDIR=$PKG install || exit 1
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+# It might be advisable to have the libraries in /lib${LIBDIRSUFFIX}:
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+mv $PKG/usr/lib${LIBDIRSUFFIX}/liblzma.so.* $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ rm -f liblzma.so
+ ln -sf ../../lib${LIBDIRSUFFIX}/liblzma.so.? liblzma.so
+)
+
+# At least the xz binary should also be in /bin:
+mkdir -p $PKG/bin
+mv $PKG/usr/bin/xz $PKG/bin
+( cd $PKG/usr/bin
+ ln -sf ../../bin/xz .
+)
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL* NEWS PACKAGERS README* THANKS \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
+
diff --git a/patches/source/xz/xzgrep-ZDI-CAN-16587.patch b/patches/source/xz/xzgrep-ZDI-CAN-16587.patch
new file mode 100644
index 00000000..406ded59
--- /dev/null
+++ b/patches/source/xz/xzgrep-ZDI-CAN-16587.patch
@@ -0,0 +1,94 @@
+From 69d1b3fc29677af8ade8dc15dba83f0589cb63d6 Mon Sep 17 00:00:00 2001
+From: Lasse Collin <lasse.collin@tukaani.org>
+Date: Tue, 29 Mar 2022 19:19:12 +0300
+Subject: [PATCH] xzgrep: Fix escaping of malicious filenames (ZDI-CAN-16587).
+
+Malicious filenames can make xzgrep to write to arbitrary files
+or (with a GNU sed extension) lead to arbitrary code execution.
+
+xzgrep from XZ Utils versions up to and including 5.2.5 are
+affected. 5.3.1alpha and 5.3.2alpha are affected as well.
+This patch works for all of them.
+
+This bug was inherited from gzip's zgrep. gzip 1.12 includes
+a fix for zgrep.
+
+The issue with the old sed script is that with multiple newlines,
+the N-command will read the second line of input, then the
+s-commands will be skipped because it's not the end of the
+file yet, then a new sed cycle starts and the pattern space
+is printed and emptied. So only the last line or two get escaped.
+
+One way to fix this would be to read all lines into the pattern
+space first. However, the included fix is even simpler: All lines
+except the last line get a backslash appended at the end. To ensure
+that shell command substitution doesn't eat a possible trailing
+newline, a colon is appended to the filename before escaping.
+The colon is later used to separate the filename from the grep
+output so it is fine to add it here instead of a few lines later.
+
+The old code also wasn't POSIX compliant as it used \n in the
+replacement section of the s-command. Using \<newline> is the
+POSIX compatible method.
+
+LC_ALL=C was added to the two critical sed commands. POSIX sed
+manual recommends it when using sed to manipulate pathnames
+because in other locales invalid multibyte sequences might
+cause issues with some sed implementations. In case of GNU sed,
+these particular sed scripts wouldn't have such problems but some
+other scripts could have, see:
+
+ info '(sed)Locale Considerations'
+
+This vulnerability was discovered by:
+cleemy desu wayo working with Trend Micro Zero Day Initiative
+
+Thanks to Jim Meyering and Paul Eggert discussing the different
+ways to fix this and for coordinating the patch release schedule
+with gzip.
+---
+ src/scripts/xzgrep.in | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in
+index b180936..e5186ba 100644
+--- a/src/scripts/xzgrep.in
++++ b/src/scripts/xzgrep.in
+@@ -180,22 +180,26 @@ for i; do
+ { test $# -eq 1 || test $no_filename -eq 1; }; then
+ eval "$grep"
+ else
++ # Append a colon so that the last character will never be a newline
++ # which would otherwise get lost in shell command substitution.
++ i="$i:"
++
++ # Escape & \ | and newlines only if such characters are present
++ # (speed optimization).
+ case $i in
+ (*'
+ '* | *'&'* | *'\'* | *'|'*)
+- i=$(printf '%s\n' "$i" |
+- sed '
+- $!N
+- $s/[&\|]/\\&/g
+- $s/\n/\\n/g
+- ');;
++ i=$(printf '%s\n' "$i" | LC_ALL=C sed 's/[&\|]/\\&/g; $!s/$/\\/');;
+ esac
+- sed_script="s|^|$i:|"
++
++ # $i already ends with a colon so don't add it here.
++ sed_script="s|^|$i|"
+
+ # Fail if grep or sed fails.
+ r=$(
+ exec 4>&1
+- (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
++ (eval "$grep" 4>&-; echo $? >&4) 3>&- |
++ LC_ALL=C sed "$sed_script" >&3 4>&-
+ ) || r=2
+ exit $r
+ fi >&3 5>&-
+--
+2.35.1
+