Explorar o código

allow spaces in fingerprints for 'apt-key del'

Fingerprints tend to be displayed in space-separated octet pairs so be
nice and allow delete to remove a key based on such a string rather than
requiring that the user is deleting all the spaces manually.
David Kalnischkies %!s(int64=10) %!d(string=hai) anos
pai
achega
e289907f5e
Modificáronse 2 ficheiros con 10 adicións e 2 borrados
  1. 2 2
      cmdline/apt-key.in
  2. 8 0
      test/integration/test-apt-key

+ 2 - 2
cmdline/apt-key.in

@@ -200,8 +200,8 @@ remove_key_from_keyring() {
 	local FINGERPRINTS="${GPGHOMEDIR}/keyringfile.keylst"
 	get_fingerprints_of_keyring "$KEYRINGFILE" > "$FINGERPRINTS"
 
-        # strip leading 0x, if present:
-        KEY="${KEY#0x}"
+	# strip leading 0x, if present:
+	KEY="$(echo "${KEY#0x}" | tr -d ' ')"
 
 	# check if the key is in this keyring
 	if ! grep -iq "^[0-9A-F]*${KEY}$" "$FINGERPRINTS"; then

+ 8 - 0
test/integration/test-apt-key

@@ -116,6 +116,14 @@ gpg:              unchanged: 1' aptkey --fakeroot update
 	testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg"
 	testsuccess cmp "${KEYDIR}/joesixpack.pub" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg~"
 
+	msgtest 'Test key removal with' 'spaced fingerprint'
+	cleanplate
+	cp -a "${KEYDIR}/joesixpack.pub" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg"
+	testsuccess --nomsg aptkey --fakeroot del '34A8 E9D1 8DB3 20F3 67E8 EAA0 5A90 D141 DBAC 8DAE'
+	testempty aptkey list
+	testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg"
+	testsuccess cmp "${KEYDIR}/joesixpack.pub" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg~"
+
 	msgtest 'Test key removal with' 'single key in softlink'
 	cleanplate
 	ln -s "$(readlink -f "${KEYDIR}/joesixpack.pub")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.gpg"