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

g10/ChangeLog
g10/passphrase.c

index ebf62b7..8ee9312 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-08-08  David Shaw  <dshaw@jabberwocky.com>
 
        * plaintext.c (handle_plaintext): Bigger buffer for extra safety.
index 178cd23..e4546ee 100644 (file)
@@ -868,9 +868,11 @@ agent_get_passphrase ( u32 *keyid, int mode, const char *tryagain_text,
           m_free (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;