diff --git a/0001-libdpkg-Do-not-define-the-clamp-macro-when-compiling.patch b/0001-libdpkg-Do-not-define-the-clamp-macro-when-compiling.patch deleted file mode 100644 index 8f0ea50f3e651dc1e768e6e6289c3b822d36b734..0000000000000000000000000000000000000000 --- a/0001-libdpkg-Do-not-define-the-clamp-macro-when-compiling.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 7149af4125f76422e320c3d1f9d9308e9259bdf9 Mon Sep 17 00:00:00 2001 -From: Guillem Jover -Date: Wed, 23 Dec 2020 17:23:49 +0100 -Subject: [PATCH] libdpkg: Do not define the clamp macro when compiling C++ - code - -Newer versions of the C++ standard define a clamp function in the STL, -which gets messed up by our macro. - -Reported-by: Helmut Grohne -Warned-by: g++ -std=gnu++17 -Changelog: internal - -reference: https://git.dpkg.org/git/dpkg/dpkg.git/commit/?id=7149af4125f76422e320c3d1f9d9308e9259bdf9 ---- - lib/dpkg/macros.h | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/lib/dpkg/macros.h b/lib/dpkg/macros.h -index 6eaedf844..a4776570a 100644 ---- a/lib/dpkg/macros.h -+++ b/lib/dpkg/macros.h -@@ -153,9 +153,12 @@ - * @param l The low limit. - * @param h The high limit. - */ -+/* For C++ use native implementations from STL or similar. */ -+#ifndef __cplusplus - #ifndef clamp - #define clamp(v, l, h) ((v) > (h) ? (h) : ((v) < (l) ? (l) : (v))) - #endif -+#endif - - /** @} */ - --- -2.41.0 - diff --git a/CVE-2022-1664.patch b/CVE-2022-1664.patch deleted file mode 100644 index 4babb73e41e8e5718e07d0d054b6d09f88983f4a..0000000000000000000000000000000000000000 --- a/CVE-2022-1664.patch +++ /dev/null @@ -1,324 +0,0 @@ -From faa4c92debe45412bfcf8a44f26e827800bb24be Mon Sep 17 00:00:00 2001 -From: Guillem Jover -Date: Tue, 3 May 2022 02:09:32 +0200 -Subject: Dpkg::Source::Archive: Prevent directory traversal for in-place - extracts - -For untrusted v2 and v3 source package formats that include a debian.tar -archive, when we are extracting it, we do that as an in-place extraction, -which can lead to directory traversal situations on specially crafted -orig.tar and debian.tar tarballs. - -GNU tar replaces entries on the filesystem by the entries present on -the tarball, but it will follow symlinks when the symlink pathname -itself is not present as an actual directory on the tarball. - -This means we can create an orig.tar where there's a symlink pointing -out of the source tree root directory, and then a debian.tar that -contains an entry within that symlink as if it was a directory, without -a directory entry for the symlink pathname itself, which will be -extracted following the symlink outside the source tree root. - -This is currently noted as expected in GNU tar documentation. But even -if there was a new extraction mode avoiding this problem we'd need such -new version. Using perl's Archive::Tar would solve the problem, but -switching to such different pure perl implementation, could cause -compatibility or performance issues. - -What we do is when we are requested to perform an in-place extract, we -instead still use a temporary directory, then walk that directory and -remove any matching entry in the destination directory, replicating what -GNU tar would do, but in addition avoiding the directory traversal issue -for symlinks. Which should work with any tar implementation and be safe. - -Reported-by: Max Justicz -Stable-Candidates: 1.18.x 1.19.x 1.20.x -Fixes: commit 0c0057a27fecccab77d2b3cffa9a7d172846f0b4 (1.14.17) -Fixes: CVE-2022-1664 -(cherry picked from commit 7a6c03cb34d4a09f35df2f10779cbf1b70a5200b) ---- - scripts/Dpkg/Source/Archive.pm | 122 +++++++++++++++++++++++++++++++--------- - scripts/t/Dpkg_Source_Archive.t | 110 +++++++++++++++++++++++++++++++++++- - 2 files changed, 204 insertions(+), 28 deletions(-) - -diff --git a/scripts/Dpkg/Source/Archive.pm b/scripts/Dpkg/Source/Archive.pm -index 33c181b20..2ddd04af8 100644 ---- a/scripts/Dpkg/Source/Archive.pm -+++ b/scripts/Dpkg/Source/Archive.pm -@@ -21,9 +21,11 @@ use warnings; - our $VERSION = '0.01'; - - use Carp; -+use Errno qw(ENOENT); - use File::Temp qw(tempdir); - use File::Basename qw(basename); - use File::Spec; -+use File::Find; - use Cwd; - - use Dpkg (); -@@ -110,19 +112,13 @@ sub extract { - my %spawn_opts = (wait_child => 1); - - # Prepare destination -- my $tmp; -- if ($opts{in_place}) { -- $spawn_opts{chdir} = $dest; -- $tmp = $dest; # So that fixperms call works -- } else { -- my $template = basename($self->get_filename()) . '.tmp-extract.XXXXX'; -- unless (-e $dest) { -- # Kludge so that realpath works -- mkdir($dest) or syserr(g_('cannot create directory %s'), $dest); -- } -- $tmp = tempdir($template, DIR => Cwd::realpath("$dest/.."), CLEANUP => 1); -- $spawn_opts{chdir} = $tmp; -+ my $template = basename($self->get_filename()) . '.tmp-extract.XXXXX'; -+ unless (-e $dest) { -+ # Kludge so that realpath works -+ mkdir($dest) or syserr(g_('cannot create directory %s'), $dest); - } -+ my $tmp = tempdir($template, DIR => Cwd::realpath("$dest/.."), CLEANUP => 1); -+ $spawn_opts{chdir} = $tmp; - - # Prepare stuff that handles the input of tar - $self->ensure_open('r', delete_sig => [ 'PIPE' ]); -@@ -145,22 +141,94 @@ sub extract { - # have to be calculated using mount options and other madness. - fixperms($tmp) unless $opts{no_fixperms}; - -- # Stop here if we extracted in-place as there's nothing to move around -- return if $opts{in_place}; -- -- # Rename extracted directory -- opendir(my $dir_dh, $tmp) or syserr(g_('cannot opendir %s'), $tmp); -- my @entries = grep { $_ ne '.' && $_ ne '..' } readdir($dir_dh); -- closedir($dir_dh); -- my $done = 0; -- erasedir($dest); -- if (scalar(@entries) == 1 && ! -l "$tmp/$entries[0]" && -d _) { -- rename("$tmp/$entries[0]", $dest) -- or syserr(g_('unable to rename %s to %s'), -- "$tmp/$entries[0]", $dest); -+ # If we are extracting "in-place" do not remove the destination directory. -+ if ($opts{in_place}) { -+ my $canon_basedir = Cwd::realpath($dest); -+ # On Solaris /dev/null points to /devices/pseudo/mm@0:null. -+ my $canon_devnull = Cwd::realpath('/dev/null'); -+ my $check_symlink = sub { -+ my $pathname = shift; -+ my $canon_pathname = Cwd::realpath($pathname); -+ if (not defined $canon_pathname) { -+ return if $! == ENOENT; -+ -+ syserr(g_("pathname '%s' cannot be canonicalized"), $pathname); -+ } -+ return if $canon_pathname eq $canon_devnull; -+ return if $canon_pathname eq $canon_basedir; -+ return if $canon_pathname =~ m{^\Q$canon_basedir/\E}; -+ warning(g_("pathname '%s' points outside source root (to '%s')"), -+ $pathname, $canon_pathname); -+ }; -+ -+ my $move_in_place = sub { -+ my $relpath = File::Spec->abs2rel($File::Find::name, $tmp); -+ my $destpath = File::Spec->catfile($dest, $relpath); -+ -+ my ($mode, $atime, $mtime); -+ lstat $File::Find::name -+ or syserr(g_('cannot get source pathname %s metadata'), $File::Find::name); -+ ((undef) x 2, $mode, (undef) x 5, $atime, $mtime) = lstat _; -+ my $src_is_dir = -d _; -+ -+ my $dest_exists = 1; -+ if (not lstat $destpath) { -+ if ($! == ENOENT) { -+ $dest_exists = 0; -+ } else { -+ syserr(g_('cannot get target pathname %s metadata'), $destpath); -+ } -+ } -+ my $dest_is_dir = -d _; -+ if ($dest_exists) { -+ if ($dest_is_dir && $src_is_dir) { -+ # Refresh the destination directory attributes with the -+ # ones from the tarball. -+ chmod $mode, $destpath -+ or syserr(g_('cannot change directory %s mode'), $File::Find::name); -+ utime $atime, $mtime, $destpath -+ or syserr(g_('cannot change directory %s times'), $File::Find::name); -+ -+ # We should do nothing, and just walk further tree. -+ return; -+ } elsif ($dest_is_dir) { -+ rmdir $destpath -+ or syserr(g_('cannot remove destination directory %s'), $destpath); -+ } else { -+ $check_symlink->($destpath); -+ unlink $destpath -+ or syserr(g_('cannot remove destination file %s'), $destpath); -+ } -+ } -+ # If we are moving a directory, we do not need to walk it. -+ if ($src_is_dir) { -+ $File::Find::prune = 1; -+ } -+ rename $File::Find::name, $destpath -+ or syserr(g_('cannot move %s to %s'), $File::Find::name, $destpath); -+ }; -+ -+ find({ -+ wanted => $move_in_place, -+ no_chdir => 1, -+ dangling_symlinks => 0, -+ }, $tmp); - } else { -- rename($tmp, $dest) -- or syserr(g_('unable to rename %s to %s'), $tmp, $dest); -+ # Rename extracted directory -+ opendir(my $dir_dh, $tmp) or syserr(g_('cannot opendir %s'), $tmp); -+ my @entries = grep { $_ ne '.' && $_ ne '..' } readdir($dir_dh); -+ closedir($dir_dh); -+ -+ erasedir($dest); -+ -+ if (scalar(@entries) == 1 && ! -l "$tmp/$entries[0]" && -d _) { -+ rename("$tmp/$entries[0]", $dest) -+ or syserr(g_('unable to rename %s to %s'), -+ "$tmp/$entries[0]", $dest); -+ } else { -+ rename($tmp, $dest) -+ or syserr(g_('unable to rename %s to %s'), $tmp, $dest); -+ } - } - erasedir($tmp); - } -diff --git a/scripts/t/Dpkg_Source_Archive.t b/scripts/t/Dpkg_Source_Archive.t -index 7b70da68e..09496aeea 100644 ---- a/scripts/t/Dpkg_Source_Archive.t -+++ b/scripts/t/Dpkg_Source_Archive.t -@@ -16,12 +16,120 @@ - use strict; - use warnings; - --use Test::More tests => 1; -+use Test::More tests => 4; -+use Test::Dpkg qw(:paths); -+ -+use File::Spec; -+use File::Path qw(make_path rmtree); - - BEGIN { - use_ok('Dpkg::Source::Archive'); - } - -+use Dpkg; -+ -+my $tmpdir = 't.tmp/Dpkg_Source_Archive'; -+ -+rmtree($tmpdir); -+ -+sub test_touch -+{ -+ my ($name, $data) = @_; -+ -+ open my $fh, '>', $name -+ or die "cannot touch file $name\n"; -+ print { $fh } $data if $data; -+ close $fh; -+} -+ -+sub test_path_escape -+{ -+ my $name = shift; -+ -+ my $treedir = File::Spec->rel2abs("$tmpdir/$name-tree"); -+ my $overdir = File::Spec->rel2abs("$tmpdir/$name-overlay"); -+ my $outdir = "$tmpdir/$name-out"; -+ my $expdir = "$tmpdir/$name-exp"; -+ -+ # This is the base directory, where we are going to be extracting stuff -+ # into, which include traps. -+ make_path("$treedir/subdir-a"); -+ test_touch("$treedir/subdir-a/file-a"); -+ test_touch("$treedir/subdir-a/file-pre-a"); -+ make_path("$treedir/subdir-b"); -+ test_touch("$treedir/subdir-b/file-b"); -+ test_touch("$treedir/subdir-b/file-pre-b"); -+ symlink File::Spec->abs2rel($outdir, $treedir), "$treedir/symlink-escape"; -+ symlink File::Spec->abs2rel("$outdir/nonexistent", $treedir), "$treedir/symlink-nonexistent"; -+ symlink "$treedir/file", "$treedir/symlink-within"; -+ test_touch("$treedir/supposed-dir"); -+ -+ # This is the overlay directory, which we'll pack and extract over the -+ # base directory. -+ make_path($overdir); -+ make_path("$overdir/subdir-a/aa"); -+ test_touch("$overdir/subdir-a/aa/file-aa", 'aa'); -+ test_touch("$overdir/subdir-a/file-a", 'a'); -+ make_path("$overdir/subdir-b/bb"); -+ test_touch("$overdir/subdir-b/bb/file-bb", 'bb'); -+ test_touch("$overdir/subdir-b/file-b", 'b'); -+ make_path("$overdir/symlink-escape"); -+ test_touch("$overdir/symlink-escape/escaped-file", 'escaped'); -+ test_touch("$overdir/symlink-nonexistent", 'nonexistent'); -+ make_path("$overdir/symlink-within"); -+ make_path("$overdir/supposed-dir"); -+ test_touch("$overdir/supposed-dir/supposed-file", 'something'); -+ -+ # Generate overlay tar. -+ system($Dpkg::PROGTAR, '-cf', "$overdir.tar", '-C', $overdir, qw( -+ subdir-a subdir-b -+ symlink-escape/escaped-file symlink-nonexistent symlink-within -+ supposed-dir -+ )) == 0 -+ or die "cannot create overlay tar archive\n"; -+ -+ # This is the expected directory, which we'll be comparing against. -+ make_path($expdir); -+ system('cp', '-a', $overdir, $expdir) == 0 -+ or die "cannot copy overlay hierarchy into expected directory\n"; -+ -+ # Store the expected and out reference directories into a tar to compare -+ # its structure against the result reference. -+ system($Dpkg::PROGTAR, '-cf', "$expdir.tar", '-C', $overdir, qw( -+ subdir-a subdir-b -+ symlink-escape/escaped-file symlink-nonexistent symlink-within -+ supposed-dir -+ ), '-C', $treedir, qw( -+ subdir-a/file-pre-a -+ subdir-b/file-pre-b -+ )) == 0 -+ or die "cannot create expected tar archive\n"; -+ -+ # This directory is supposed to remain empty, anything inside implies a -+ # directory traversal. -+ make_path($outdir); -+ -+ my $warnseen; -+ local $SIG{__WARN__} = sub { $warnseen = $_[0] }; -+ -+ # Perform the extraction. -+ my $tar = Dpkg::Source::Archive->new(filename => "$overdir.tar"); -+ $tar->extract($treedir, in_place => 1); -+ -+ # Store the result into a tar to compare its structure against a reference. -+ system($Dpkg::PROGTAR, '-cf', "$treedir.tar", '-C', $treedir, '.'); -+ -+ # Check results -+ ok(length $warnseen && $warnseen =~ m/points outside source root/, -+ 'expected warning seen'); -+ ok(system($Dpkg::PROGTAR, '--compare', '-f', "$expdir.tar", '-C', $treedir) == 0, -+ 'expected directory matches'); -+ ok(! -e "$outdir/escaped-file", -+ 'expected output directory is empty, directory traversal'); -+} -+ -+test_path_escape('in-place'); -+ - # TODO: Add actual test cases. - - 1; --- -cgit v1.2.3 - diff --git a/dpkg-fix-logrotate.patch b/dpkg-fix-logrotate.patch deleted file mode 100644 index 0a315d1f4cd81a2b31d45055cea8794945825543..0000000000000000000000000000000000000000 --- a/dpkg-fix-logrotate.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -up ./debian/dpkg.logrotate.orig ./debian/dpkg.logrotate ---- ./debian/dpkg.logrotate.orig 2013-06-30 10:04:23.369382622 +0300 -+++ ./debian/dpkg.logrotate 2013-06-30 10:04:39.268407865 +0300 -@@ -7,12 +7,3 @@ - notifempty - create 644 root root - } --/var/log/alternatives.log { -- monthly -- rotate 12 -- compress -- delaycompress -- missingok -- notifempty -- create 644 root root --} - diff --git a/dpkg-log-Change-logfile-permission-to-satisfy-with-s.patch b/dpkg-log-Change-logfile-permission-to-satisfy-with-s.patch deleted file mode 100644 index f528ae53c1faac117de799a6014ed0478d647b38..0000000000000000000000000000000000000000 --- a/dpkg-log-Change-logfile-permission-to-satisfy-with-s.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 5ee4bdf24d9c61c42f781a89e09584468386fa02 Mon Sep 17 00:00:00 2001 -From: zhengchuan -Date: Fri, 2 Aug 2019 17:28:53 +0800 -Subject: [PATCH] dpkg log: Change logfile permission to satisfy with safty - ---- - debian/dpkg.logrotate | 2 +- - debian/dpkg.postinst | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/debian/dpkg.logrotate b/debian/dpkg.logrotate -index cf36f08..c57052b 100644 ---- a/debian/dpkg.logrotate -+++ b/debian/dpkg.logrotate -@@ -5,5 +5,5 @@ - delaycompress - missingok - notifempty -- create 644 root root -+ create 640 root root - } -diff --git a/debian/dpkg.postinst b/debian/dpkg.postinst -index 9771d7f..674e0fd 100755 ---- a/debian/dpkg.postinst -+++ b/debian/dpkg.postinst -@@ -19,7 +19,7 @@ create_database() { - create_logfile() { - logfile=/var/log/dpkg.log - touch $logfile -- chmod 644 $logfile -+ chmod 640 $logfile - chown root:root $logfile 2>/dev/null || chown 0:0 $logfile - } - --- -1.7.12.4 - - diff --git a/dpkg.spec b/dpkg.spec index 147a605679cee2a8b066918b0fb4893a1f60a83e..13677527150534edf4d3e8aa4d5016797d7695dd 100644 --- a/dpkg.spec +++ b/dpkg.spec @@ -1,8 +1,8 @@ -%global enable_dev_package 0 +%global enable_dev_package 1 Name: dpkg -Version: 1.18.25 -Release: 14 +Version: 1.21.22 +Release: 1 Summary: Package maintenance system for Debian Linux License: GPL-2.0-only and GPL-2.0-or-later and LGPL-2.0-or-later and Public Domain and BSD-2-Clause URL: https://tracker.debian.org/pkg/dpkg @@ -10,7 +10,8 @@ Source0: http://ftp.debian.org/debian/pool/main/d/%{name}/%{name}_%{version}.tar BuildRequires: zlib-devel bzip2-devel libselinux-devel gettext ncurses-devel BuildRequires: autoconf automake doxygen gettext-devel gcc-c++ libtool -BuildRequires: flex fakeroot xz-devel dotconf-devel po4a >= 0.43 +BuildRequires: libzstd-devel make libmd-devel +BuildRequires: flex fakeroot xz-devel dotconf-devel po4a >= 0.59 BuildRequires: perl-interpreter BuildRequires: perl-devel BuildRequires: perl-generators @@ -19,14 +20,13 @@ BuildRequires: perl(Digest) BuildRequires: perl(Test::More) BuildRequires: perl(IPC::Cmd) BuildRequires: perl(Digest::SHA) +BuildRequires: perl(Digest::MD5) BuildRequires: perl(IO::String) +BuildRequires: perl(Tie::Handle) +BuildRequires: fakeroot Requires(post): coreutils -Patch1: dpkg-fix-logrotate.patch -Patch2: dpkg-log-Change-logfile-permission-to-satisfy-with-s.patch -Patch3: CVE-2022-1664.patch -Patch4: add-loongarch-support-for-dpkg.patch -Patch5: 0001-libdpkg-Do-not-define-the-clamp-macro-when-compiling.patch +Patch1: add-loongarch-support-for-dpkg.patch %description Dpkg is a tool to install, build, remove and manageDebian packages. The @@ -85,10 +85,11 @@ sed -i 's/^use --/may use --/' scripts/dpkg-source.pl autoreconf %configure --disable-linker-optimisations \ --with-admindir=%{_localstatedir}/lib/dpkg \ + --runstatedir=/run \ --with-libselinux \ - --without-libmd \ --with-libz \ --with-liblzma \ + --with-libzstd \ --with-libbz2 %make_build @@ -137,14 +138,20 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %{_bindir}/dpkg-query %{_bindir}/dpkg-split %{_bindir}/dpkg-statoverride +%{_bindir}/dpkg-realpath %{_bindir}/dpkg-trigger %{_bindir}/dselect %{_sbindir}/start-stop-daemon +%{_sbindir}/dpkg-fsys-usrunmess +%{_libexecdir}/dpkg/dpkg-db-backup %dir %{_datadir}/dpkg %{_datadir}/dpkg/abitable %{_datadir}/dpkg/cputable %{_datadir}/dpkg/ostable %{_datadir}/dpkg/tupletable +%{_datadir}/polkit-1/actions/org.dpkg.pkexec.update-alternatives.policy +%{_datadir}/doc/dpkg/* +%{_datadir}/dpkg/sh/dpkg-error.sh %dir %{_localstatedir}/lib/dpkg %dir %{_localstatedir}/lib/dpkg/alternatives %dir %{_localstatedir}/lib/dpkg/info @@ -177,6 +184,7 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %exclude %{_bindir}/dpkg-source %exclude %{_bindir}/dpkg-vendor %exclude %{_datadir}/dpkg/*.mk +%exclude %{_datadir}/zsh/vendor-completions/_dpkg-parsechangelog %exclude /etc/dpkg/shlibs.* %exclude /usr/share/locale/ca/LC_MESSAGES/dpkg-dev.mo %exclude /usr/share/locale/de/LC_MESSAGES/dpkg-dev.mo @@ -185,6 +193,8 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %exclude /usr/share/locale/pl/LC_MESSAGES/dpkg-dev.mo %exclude /usr/share/locale/ru/LC_MESSAGES/dpkg-dev.mo %exclude /usr/share/locale/sv/LC_MESSAGES/dpkg-dev.mo +%exclude /usr/share/locale/nl/LC_MESSAGES/dpkg-dev.mo +%exclude /usr/share/locale/pt/LC_MESSAGES/dpkg-dev.mo %endif %{perl_vendorlib}/Dselect @@ -194,9 +204,11 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %{_libdir}/libdpkg.a %{_libdir}/pkgconfig/libdpkg.pc %{_includedir}/dpkg/*.h +%{_datadir}/aclocal/dpkg-*.m4 %if %{enable_dev_package} %files dev -f dpkg-dev.lang +%doc doc/README.feature-removal-schedule doc/README.api doc/spec %config(noreplace) %{_sysconfdir}/dpkg/shlibs.default %config(noreplace) %{_sysconfdir}/dpkg/shlibs.override %{_bindir}/dpkg-architecture @@ -217,6 +229,7 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %{_bindir}/dpkg-source %{_bindir}/dpkg-vendor %{_datadir}/dpkg/*.mk +%{_datadir}/zsh/vendor-completions/_dpkg-parsechangelog %endif %files perl @@ -225,10 +238,9 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %files help %doc debian/changelog README TODO -%doc dselect/methods/multicd/README.multicd %doc debian/dpkg.cron.daily -%doc AUTHORS THANKS debian/usertags doc/README.api -%doc doc/frontend.txt doc/triggers.txt +%doc AUTHORS THANKS doc/README.api + %{_mandir}/* %exclude %{_mandir}/it/man1/ %exclude %{_mandir}/it/man5/ @@ -239,6 +251,9 @@ chown root:root /var/log/dpkg.log 2>/dev/null || chown 0:0 /var/log/dpkg.log %endif %changelog +* Fri Jan 12 2024 Dongxing Wang - 1.21.22-1 +- Update version to 1.21.22 + * Thu Jul 20 2023 chenchen - 1.18.25-14 - Do not define the clamp macro when compiling C++ code diff --git a/dpkg_1.18.25.tar.xz b/dpkg_1.21.22.tar.xz similarity index 37% rename from dpkg_1.18.25.tar.xz rename to dpkg_1.21.22.tar.xz index b8a34c817cf2ae7dab4e4e09a1b87704dcf2f727..c4756c940cb807131d9a5625f24d1d7a1ec093da 100644 Binary files a/dpkg_1.18.25.tar.xz and b/dpkg_1.21.22.tar.xz differ