Package: dpkg-dev
Version: 1.13.22
Severity: wishlist
Tags: patch

I'm not sure what the subset of non-zero exit status that result after this
bitshifting means (FWIW, the gpg manpage only makes distinction between zero
and non-zero status), but it's clearly something we don't want.  If gpg returns
non-zero, it is a potential security issue and I think it should be treated as
an unpack error.

Patch attached.

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17-2-amd64
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to en_US.UTF-8)

Versions of packages dpkg-dev depends on:
ii  binutils                      2.17-2     The GNU assembler, linker and bina
ii  cpio                          2.6-17     GNU cpio -- a program to manage ar
ii  dpkg                          1.13.22    package maintenance system for Deb
ii  make                          3.81-3     The GNU version of the "make" util
ii  patch                         2.5.9-4    Apply a diff file to an original
ii  perl [perl5]                  5.8.8-6.1  Larry Wall's Practical Extraction 
ii  perl-modules                  5.8.8-6.1  Core Perl modules

Versions of packages dpkg-dev recommends:
ii  bzip2                         1.0.3-6    high-quality block-sorting file co
ii  gcc [c-compiler]              4:4.1.1-7  The GNU C compiler
ii  gcc-3.4 [c-compiler]          3.4.6-4    The GNU C compiler
ii  gcc-4.0 [c-compiler]          4.0.3-7    The GNU C compiler
ii  gcc-4.1 [c-compiler]          4.1.1-13   The GNU C compiler

-- no debconf information
--- /usr/bin/dpkg-source        2006-06-21 17:08:36.000000000 +0200
+++ ./dpkg-source       2006-09-30 10:20:58.000000000 +0200
@@ -624,11 +624,10 @@
            $gpg_command = $gpg_command.quotemeta($dsc).' 2>&1';
 
            my @gpg_output = `$gpg_command`;
-           my $gpg_status = $? >> 8;
+           my $gpg_status = $?;
            if ($gpg_status) {
                print STDERR join("",@gpg_output);
-               &error(sprintf(_g("failed to verify signature on %s"), $dsc))
-                   if ($gpg_status == 1);
+               &error(sprintf(_g("failed to verify signature on %s"), $dsc));
            }
        } else {
            &warn(sprintf(_g("could not verify signature on %s since gpg isn't 
installed"), $dsc));

Reply via email to