2004-08-18 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Wed, 18 Aug 2004 00:03:07 +0000 (00:03 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Wed, 18 Aug 2004 00:03:07 +0000 (00:03 +0000)
* passphrase.c (agent_get_passphrase):

g10/ChangeLog
g10/passphrase.c

index 7a8ccd5..e472a62 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-18  Marcus Brinkmann  <marcus@g10code.de>
+
+       * passphrase.c (agent_get_passphrase): Fix detection of gpg-agent
+       cancellation.
+
 2004-07-01  Werner Koch  <wk@gnupg.org>
 
        * card-util.c (change_login): Kludge to allow reading data from a
index 986070a..3014990 100644 (file)
@@ -862,9 +862,11 @@ agent_get_passphrase ( u32 *keyid, int mode, const char *tryagain_text,
           xfree (orig_codeset);
           return pw;
         }
-      else if (nread > 7 && !memcmp (pw, "ERR 111", 7)
-               && (pw[7] == ' ' || pw[7] == '\n') ) 
-        {
+      else if (nread > 4 && !memcmp (pw, "ERR ", 4)
+              && (0xffff & strtoul (&pw[4], NULL, 0)) == 99)
+       {
+         /* 99 is GPG_ERR_CANCELED.  FIXME: Check tail and overflow,
+            and use gpg-error.  */
           log_info (_("cancelled by user\n") );
           if (canceled)
             *canceled = 1;