diff options
author | Andre Heinecke <[email protected]> | 2019-04-18 11:19:05 +0000 |
---|---|---|
committer | Andre Heinecke <[email protected]> | 2019-04-18 12:26:42 +0000 |
commit | 35899dc2903b118620e6f9f0fa6b21c8568abbf1 (patch) | |
tree | cc8f9d304f27c437761f5ab03b81baa64e75cd12 | |
parent | common: Fix AWK portability. (diff) | |
download | gnupg-35899dc2903b118620e6f9f0fa6b21c8568abbf1.tar.gz gnupg-35899dc2903b118620e6f9f0fa6b21c8568abbf1.zip |
g10: Fix double free when locating by mbox
* g10/getkey.c (get_best_pubkey_byname): Set new.uid always
to NULL after use.
--
pubkey_cmp is not guranteed to set new.uid.
So if the diff < 0 case is reached best is set to new.
If then diff > 0 is reached without modifying new.uid
e.g. if the key has no matching mboxes. new.uid is
free'd even though the uid is still referenced in
best.
GnuPG-Bug-Id: T4462
(cherry picked from commit e57954ed278cb5e6e725005b1ecaf7ce70006ce0)
-rw-r--r-- | g10/getkey.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index c4afe4510..1b699a411 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1495,15 +1495,14 @@ get_best_pubkey_byname (ctrl_t ctrl, GETKEY_CTX *retctx, PKT_public_key *pk, /* Old key is better. */ release_public_key_parts (&new.key); free_user_id (new.uid); - new.uid = NULL; } else { /* A tie. Keep the old key. */ release_public_key_parts (&new.key); free_user_id (new.uid); - new.uid = NULL; } + new.uid = NULL; } getkey_end (ctrl, ctx); ctx = NULL; |