2009-11-10 Werner Koch <wk@g10code.com>
+ * op-support.c (_gpgme_op_reset): Ignore GPG_ERR_NOT_IMPLEMENTED
+ while setting the sub protocol.
+
* engine-uiserver.c (uiserver_new): Pass fdpassing flag to
assuan_socket_connect.
+ (set_recipients): Replace fingerprint by user id.
+
+ * engine-gpgsm.c (set_recipients): Fix non-terminating loop in
+ case of a missing key.
2009-11-10 Marcus Brinkmann <marcus@g10code.de>
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;
int newlen;
free (line);
return err;
}
- i++;
}
free (line);
return gpg_error (invalid_recipients
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);
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)
free (line);
return err;
}
- i++;
}
free (line);
return gpg_error (invalid_recipients