aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <[email protected]>2016-09-22 19:32:31 +0000
committerNeal H. Walfield <[email protected]>2016-09-22 19:32:31 +0000
commitdf5353b95eefc13135e7df50a7c197f270d6080d (patch)
treef09c862cb9ceae80c995fe09822da61e7e79e193
parenttests: Add documentation, make interactive debugging possible. (diff)
downloadgnupg-df5353b95eefc13135e7df50a7c197f270d6080d.tar.gz
gnupg-df5353b95eefc13135e7df50a7c197f270d6080d.zip
g10: When adding a user id, make sure the keyblock has been prepared.
* g10/keyedit.c (keyedit_quick_adduid): Call merge_keys_and_selfsig on KEYBLOCK before adding the user id. * tests/openpgp/quick-key-manipulation.scm: Make sure that the key capabilities don't change when adding a user id. (key-data): New function. -- Signed-off-by: Neal H. Walfield <[email protected]> GnuPG-bug-id: 2697
Diffstat (limited to '')
-rw-r--r--g10/keyedit.c2
-rwxr-xr-xtests/openpgp/quick-key-manipulation.scm23
2 files changed, 24 insertions, 1 deletions
diff --git a/g10/keyedit.c b/g10/keyedit.c
index cd16ec971..65ac2eab3 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -2932,6 +2932,8 @@ keyedit_quick_adduid (ctrl_t ctrl, const char *username, const char *newuid)
fix_keyblock (&keyblock);
+ merge_keys_and_selfsig (keyblock);
+
if (menu_adduid (ctrl, keyblock, 0, NULL, uidstring))
{
err = keydb_update_keyblock (kdbhd, keyblock);
diff --git a/tests/openpgp/quick-key-manipulation.scm b/tests/openpgp/quick-key-manipulation.scm
index f2b8766bd..8a3e3f1f7 100755
--- a/tests/openpgp/quick-key-manipulation.scm
+++ b/tests/openpgp/quick-key-manipulation.scm
@@ -37,6 +37,11 @@
(define alpha "Alpha <[email protected]>")
(define bravo "Bravo <[email protected]>")
+(define (key-data key)
+ (filter (lambda (x) (or (string=? (car x) "pub")
+ (string=? (car x) "sub")))
+ (gpg-with-colons `(-k ,key))))
+
(with-temporary-working-directory
(file-copy (path-join old-home "gpg.conf") "gpg.conf")
(file-copy (path-join old-home "gpg-agent.conf") "gpg-agent.conf")
@@ -51,7 +56,23 @@
(assert (= 1 (count-uids-of-secret-key alpha)))
(info "Checking that we can add a user ID...")
- (call-check `(,@GPG --quick-adduid ,(exact alpha) ,bravo))
+
+ ;; Make sure the key capabilities don't change when we add a user id.
+ ;; (See bug #2697.)
+ (let ((pre (key-data (exact alpha)))
+ (result (call-check `(,@GPG --quick-adduid ,(exact alpha) ,bravo)))
+ (post (key-data (exact alpha))))
+ (if (not (equal? pre post))
+ (begin
+ (display "Key capabilities changed when adding a user id:")
+ (newline)
+ (display " Pre: ")
+ (display pre)
+ (newline)
+ (display " Post: ")
+ (display post)
+ (newline)
+ (exit 1))))
(call-check `(,@GPG --check-trustdb)) ; XXX why?