[svn] gpgme - r1429 - trunk/src

svn author wk cvs at cvs.gnupg.org
Tue Nov 10 17:32:11 CET 2009


Author: wk
Date: 2009-11-10 17:32:11 +0100 (Tue, 10 Nov 2009)
New Revision: 1429

Modified:
   trunk/src/ChangeLog
   trunk/src/engine-gpgsm.c
   trunk/src/engine-uiserver.c
   trunk/src/op-support.c
Log:
Make recipients command work.


Modified: trunk/src/ChangeLog
===================================================================
--- trunk/src/ChangeLog	2009-11-10 15:04:12 UTC (rev 1428)
+++ trunk/src/ChangeLog	2009-11-10 16:32:11 UTC (rev 1429)
@@ -1,8 +1,15 @@
 2009-11-10  Werner Koch  <wk at 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 at g10code.de>
 
 	* gpgme.c (gpgme_new): Set default sub protocol.

Modified: trunk/src/engine-gpgsm.c
===================================================================
--- trunk/src/engine-gpgsm.c	2009-11-10 15:04:12 UTC (rev 1428)
+++ trunk/src/engine-gpgsm.c	2009-11-10 16:32:11 UTC (rev 1429)
@@ -1161,14 +1161,14 @@
   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;
@@ -1205,7 +1205,6 @@
 	  free (line);
 	  return err;
 	}
-      i++;
     }
   free (line);
   return gpg_error (invalid_recipients

Modified: trunk/src/engine-uiserver.c
===================================================================
--- trunk/src/engine-uiserver.c	2009-11-10 15:04:12 UTC (rev 1428)
+++ trunk/src/engine-uiserver.c	2009-11-10 16:32:11 UTC (rev 1429)
@@ -1011,26 +1011,26 @@
   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 @@
 	  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 @@
 	  free (line);
 	  return err;
 	}
-      i++;
     }
   free (line);
   return gpg_error (invalid_recipients

Modified: trunk/src/op-support.c
===================================================================
--- trunk/src/op-support.c	2009-11-10 15:04:12 UTC (rev 1428)
+++ trunk/src/op-support.c	2009-11-10 16:32:11 UTC (rev 1429)
@@ -131,6 +131,8 @@
     }
 
   err = _gpgme_engine_set_protocol (ctx->engine, ctx->sub_protocol);
+  if (gpg_err_code (err) == GPG_ERR_NOT_IMPLEMENTED)
+    err = 0;
   if (err)
     return err;
 




More information about the Gnupg-commits mailing list