diff options
Diffstat (limited to 'src/engine-uiserver.c')
-rw-r--r-- | src/engine-uiserver.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c index cdcf683e..623dd593 100644 --- a/src/engine-uiserver.c +++ b/src/engine-uiserver.c @@ -1011,26 +1011,26 @@ set_recipients (engine_uiserver_t uiserver, gpgme_key_t recp[]) char *line; int linelen; int invalid_recipients = 0; - int i = 0; + int i; linelen = 10 + 40 + 1; /* "RECIPIENT " + guess + '\0'. */ line = malloc (10 + 40 + 1); if (!line) return gpg_error_from_errno (errno); strcpy (line, "RECIPIENT "); - while (!err && recp[i]) + for (i=0; !err && recp[i]; i++) { - char *fpr; + char *uid; int newlen; - if (!recp[i]->subkeys || !recp[i]->subkeys->fpr) + /* We use only the first user ID of the key. */ + if (!recp[i]->uids || !(uid=recp[i]->uids->uid) || !*uid) { invalid_recipients++; continue; } - fpr = recp[i]->subkeys->fpr; - newlen = 11 + strlen (fpr); + newlen = 11 + strlen (uid); if (linelen < newlen) { char *newline = realloc (line, newlen); @@ -1043,11 +1043,12 @@ set_recipients (engine_uiserver_t uiserver, gpgme_key_t recp[]) line = newline; linelen = newlen; } - strcpy (&line[10], fpr); + /* FIXME: need to do proper escaping */ + strcpy (&line[10], uid); err = uiserver_assuan_simple_command (ctx, line, uiserver->status.fnc, - uiserver->status.fnc_value); - /* FIXME: This requires more work. */ + uiserver->status.fnc_value); + /* FIXME: This might requires more work. */ if (gpg_err_code (err) == GPG_ERR_NO_PUBKEY) invalid_recipients++; else if (err) @@ -1055,7 +1056,6 @@ set_recipients (engine_uiserver_t uiserver, gpgme_key_t recp[]) free (line); return err; } - i++; } free (line); return gpg_error (invalid_recipients |