(simple_pwquery): Handle gpg-error style return
authorWerner Koch <wk@gnupg.org>
Wed, 18 Aug 2004 14:37:22 +0000 (14:37 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 18 Aug 2004 14:37:22 +0000 (14:37 +0000)
code for canceled.

TODO
common/ChangeLog
common/simple-pwquery.c

diff --git a/TODO b/TODO
index ce0db37..dd69544 100644 (file)
--- a/TODO
+++ b/TODO
@@ -22,6 +22,10 @@ might want to have an agent context for each service request
 ** figure out how to auto retrieve a key by serialno+issuer.
    Dirmngr is currently not able to parse more than the CN.
 
+* sm/certlist.c
+** ocspSigning usage is not fully implemented
+   We should review the entire CRL and OCSP validation system.
+
 * sm/decrypt.c
 ** replace leading zero in integer hack by a cleaner solution
 
index a3a23be..f0e7bf6 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-18  Werner Koch  <wk@g10code.de>
+
+       * simple-pwquery.c (simple_pwquery): Handle gpg-error style return
+       code for canceled.
+
 2004-07-20  Werner Koch  <wk@g10code.de>
 
        * maperror.c: Removed header ksba.h.  Not required anymore.
index 36244b1..0bc8128 100644 (file)
@@ -466,9 +466,15 @@ simple_pwquery (const char *cacheid,
       result = pw;
       pw = NULL;
     }
-  else if (nread > 7 && !memcmp (pw, "ERR 111", 7)
-      && (pw[7] == ' ' || pw[7] == '\n') )
+  else if ((nread > 7 && !memcmp (pw, "ERR 111", 7)
+            && (pw[7] == ' ' || pw[7] == '\n') )
+           || ((nread > 4 && !memcmp (pw, "ERR ", 4)
+                && (strtoul (pw+4, NULL, 0) & 0xffff) == 99)) ) 
     {
+      /* 111 is the old Assuan code for canceled which might still
+         be in use by old installations. 99 is GPG_ERR_CANCELED as
+         used by modern gpg-agents; 0xffff is used to mask out the
+         error source.  */
 #ifdef SPWQ_USE_LOGGING
       log_info (_("canceled by user\n") );
 #endif