Package: live-build
Version: 1:20151215
Severity: normal
Tags: patch

Dear Maintainer,

live-build is supposed to delete the temporary '_LB_LOCAL_KEY_EMAIL'
signing key at the end of the 'scripts/build/chroot_archives' script.
However, it fails because the 'apt-key del' command expects a key ID and not 
the email address associated with the key (_LB_LOCAL_KEY_EMAIL). This
was probably missed because the command likes to return "OK" even when
a non-existent key is specified.

The result of this bug is that an insecure (and unneeded) APT signing
key is left in the `/etc/apt/trusted.gpg' keyring.

To address the problem, it is necessary to lookup the key ID for
'_LB_LOCAL_KEY_EMAIL' using the 'apt-key list' command and parse the key
ID from line previous to where the email address for the key appears (a
little tricky).

I have attached a patch that uses a sed statement to extract the key ID
and store it in an environment variable to be used with the 'apt-key
del' command.

-- Package-specific info:

-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.3.3-grsec-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages live-build depends on:
ii  debootstrap  1.0.78

Versions of packages live-build recommends:
ii  apt-utils                       1.2.3
ii  cpio                            2.11+dfsg-5
pn  live-boot-doc                   <none>
pn  live-config-doc                 <none>
pn  live-manual-html | live-manual  <none>
ii  wget                            1.17.1-1+b1

Versions of packages live-build suggests:
pn  debian-keyring  <none>
ii  gpgv            1.4.20-1

-- no debconf information
diff --git a/scripts/build/chroot_archives b/scripts/build/chroot_archives
index 029afe7..8b2546f 100755
--- a/scripts/build/chroot_archives
+++ b/scripts/build/chroot_archives
@@ -762,7 +762,8 @@ EOF
 		# Remove local packages key if it exists
 		if Chroot chroot apt-key list | grep -q ${_LB_LOCAL_KEY_EMAIL}
 		then
-			Chroot chroot apt-key del ${_LB_LOCAL_KEY_EMAIL}
+                        _LB_LOCAL_KEY_ID=`Chroot chroot apt-key list | sed -nr '/'"${_LB_LOCAL_KEY_EMAIL}"'/{x;d;};x;g;s/^.+1024R\/([[:xdigit:]]{8}).+/\1/p'`
+                        Chroot chroot apt-key del ${_LB_LOCAL_KEY_ID} 
 		fi
 
 		# Removing stage file

Reply via email to