summaryrefslogtreecommitdiff
path: root/src/key.c
diff options
context:
space:
mode:
authorAndre Heinecke <aheinecke@intevation.de>2017-02-01 16:16:22 +0100
committerAndre Heinecke <aheinecke@intevation.de>2017-02-01 16:17:07 +0100
commita28d31fdb623f2ee30e8094d09f1a0d1ae446a9b (patch)
tree3fd263ce57b641e3ffa107c3aa7f6c94ca6a8922 /src/key.c
parentba594d85e35e63301755977234d3af88a167a215 (diff)
downloadgpgme-a28d31fdb623f2ee30e8094d09f1a0d1ae446a9b.tar.gz
core: Improve mailbox only uid handling
* src/key.c (_gpgme_key_append_name): Set email and remove name for uid only keys. -- If we have a name and no email but the name can be parsed as an address we now treat the address as email and remove the name. This fixes downstream users that rely on email to show email addresses and don't expilicity handle this case. E.g. A userid foo@example.com was: uid->name = "foo@example.com" uid->email = "" uid->address = "foo@example.com" It is now: uid->name = "" uid->email = "foo@example.com" uid->address = "foo@example.com"
Diffstat (limited to 'src/key.c')
-rw-r--r--src/key.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/key.c b/src/key.c
index 38acc712..fed020e7 100644
--- a/src/key.c
+++ b/src/key.c
@@ -242,6 +242,14 @@ _gpgme_key_append_name (gpgme_key_t key, const char *src, int convert)
free (uid->address);
uid->address = uid->email;
}
+ if ((!uid->email || !*uid->email) && uid->address && uid->name
+ && !strcmp (uid->name, uid->address))
+ {
+ /* Name and address are the same. This is a mailbox only key.
+ Use address as email and remove name. */
+ *uid->name = '\0';
+ uid->email = uid->address;
+ }
if (!key->uids)
key->uids = uid;