From 85e2e802f76ce563b86786eb1a948e1c3c937b18 Mon Sep 17 00:00:00 2001 From: Riku Voipio Date: Thu, 19 Oct 2017 13:30:49 +0300 Subject: [PATCH] Deb.pm: support control.tar.xz Add support for uncompressing and hdrmd5 for XZ compressed control.tar - default on dpkg >= 1.19. Fixes issue #395 Change-Id: I2f18307182591b3965c6c6e70f355ab617dc1533 --- Build/Deb.pm | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Build/Deb.pm b/Build/Deb.pm index 5713de8..904fca5 100644 --- a/Build/Deb.pm +++ b/Build/Deb.pm @@ -256,9 +256,14 @@ sub debq { $data = substr($data, 8 + 60 + $len); if (substr($data, 0, 16) ne 'control.tar.gz ' && substr($data, 0, 16) ne 'control.tar.gz/ ') { - warn("$fn: control.tar.gz is not second ar entry\n"); - close DEBF unless ref $fn; - return (); + if (substr($data, 0, 16) eq 'control.tar.xz ' || + substr($data, 0, 16) eq 'control.tar.xz/ ') { + $decompressor = "unxz"; + } else { + warn("$fn: control.tar is not second ar entry\n"); + close DEBF unless ref $fn; + return (); + } } $len = substr($data, 48, 10); if (length($data) < 60+$len) { @@ -278,7 +283,7 @@ sub debq { $data = uncompress($data, $decompressor); } if (!$data) { - warn("$fn: corrupt control.tar.gz file\n"); + warn("$fn: corrupt control.tar file\n"); return (); } my $control; @@ -288,7 +293,7 @@ sub debq { my $len = oct('00'.substr($data, 124,12)); my $blen = ($len + 1023) & ~511; if (length($data) < $blen) { - warn("$fn: corrupt control.tar.gz file\n"); + warn("$fn: corrupt control.tar file\n"); return (); } if ($n eq './control' || $n eq "control") { @@ -390,8 +395,11 @@ sub queryhdrmd5 { } $data = substr($data, 8 + 60 + $len); if (substr($data, 0, 16) ne 'control.tar.gz ' && - substr($data, 0, 16) ne 'control.tar.gz/ ') { - warn("$bin: control.tar.gz is not second ar entry\n"); + substr($data, 0, 16) ne 'control.tar.gz/ ' && + substr($data, 0, 16) ne 'control.tar.xz ' && + substr($data, 0, 16) ne 'control.tar.xz/ ') + { + warn("$bin: control.tar is not second ar entry\n"); close F; return undef; } -- 2.34.1