core: Tweak STATUS_FAILURE handling.
authorWerner Koch <wk@gnupg.org>
Thu, 12 Apr 2018 18:36:30 +0000 (20:36 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 12 Apr 2018 18:36:30 +0000 (20:36 +0200)
* src/op-support.c (_gpgme_parse_failure): Ignore failures with
location "gpg-exit".
* tests/gpg/t-verify.c (main): Adjust for the now working checking of
the second key.

Signed-off-by: Werner Koch <wk@gnupg.org>
src/op-support.c
tests/gpg/t-verify.c

index 43cb1c7..e55875f 100644 (file)
@@ -400,7 +400,13 @@ _gpgme_parse_plaintext (char *args, char **filenamep)
 
 
 /* Parse a FAILURE status line and return the error code.  ARGS is
-   modified to contain the location part.  */
+ * modified to contain the location part.  Note that for now we ignore
+ * failure codes with a location of gpg-exit; they are too trouble
+ * some.  Instead we should eventually record that error in the
+ * context and provide a function to return a fuller error
+ * description; this could then also show the location of the error
+ * (e.g. "option- parser") to make it easier for the user to detect
+ * the actual error. */
 gpgme_error_t
 _gpgme_parse_failure (char *args)
 {
@@ -418,6 +424,8 @@ _gpgme_parse_failure (char *args)
     *where = '\0';
 
   where = args;
+  if (!strcmp (where, "gpg-exit"))
+    return 0;
 
   return atoi (which);
 }
index ffc41ee..7c23406 100644 (file)
@@ -267,10 +267,12 @@ main (int argc, char *argv[])
   err = gpgme_op_verify (ctx, sig, text, NULL);
   fail_if_err (err);
   result = gpgme_op_verify_result (ctx);
-  check_result (result, 2, 0, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+  check_result (result, 2, 0, 0,
+                "A0FF4590BB6122EDEF6E3C542D727CC768697734",
                GPG_ERR_NO_ERROR, 1);
-  check_result (result, 2, 1, 0, "36EC2A70C6426EB0FCE5BB4DF91C98F049D4204C",
-               GPG_ERR_NO_ERROR, 0);
+  check_result (result, 2, 1, GPGME_SIGSUM_KEY_MISSING,
+                "36EC2A70C6426EB0FCE5BB4DF91C98F049D4204C",
+               GPG_ERR_NO_PUBKEY, 0);
 
 
   /* Checking a normal signature.  */