Workaround for a mingw runtime bug.
authorWerner Koch <wk@gnupg.org>
Thu, 4 Sep 2008 10:35:41 +0000 (10:35 +0000)
committerWerner Koch <wk@gnupg.org>
Thu, 4 Sep 2008 10:35:41 +0000 (10:35 +0000)
doc/a-decade-of-gnupg.txt
sm/ChangeLog
sm/certdump.c

index 7d625df..17209ba 100644 (file)
@@ -198,7 +198,7 @@ Happy Hacking,
 
 === Remarks ===
 
 
 === Remarks ===
 
-In a reply to this mail Alan Olsen remakrked on the ML:
+In a reply to this mail Alan Olsen remarked on the ML:
 
   MIT was forced to use the RSAREF library which had a non free
   license.  At first they used the RSAREF2 library, but then they were
 
   MIT was forced to use the RSAREF library which had a non free
   license.  At first they used the RSAREF2 library, but then they were
index 159a734..cc644d7 100644 (file)
@@ -1,3 +1,7 @@
+2008-09-04  Werner Koch  <wk@g10code.com>
+
+       * certdump.c (gpgsm_format_keydesc): Work around a mingw32 bug.
+
 2008-09-03  Werner Koch  <wk@g10code.com>
 
        * sign.c (MY_GCRY_MD_SHA224): New, so that we don't need libgcrypt
 2008-09-03  Werner Koch  <wk@g10code.com>
 
        * sign.c (MY_GCRY_MD_SHA224): New, so that we don't need libgcrypt
index 9153901..9dbd245 100644 (file)
@@ -979,7 +979,13 @@ gpgsm_format_keydesc (ksba_cert_t cert)
   buffer = p = xtrymalloc (strlen (name) * 3 + 1);
   for (s=name; *s; s++)
     {
   buffer = p = xtrymalloc (strlen (name) * 3 + 1);
   for (s=name; *s; s++)
     {
-      if (*s < ' ' || *s == '+')
+      /* We also escape the quote character to work around a bug in
+         the mingw32 runtime which does not correcty handle command
+         line quoting.  We correctly double the quote mark when
+         calling a program (i.e. gpg-protec-tool), but the pre-main
+         code does not notice the double quote as an escaped
+         quote.  */
+      if (*s < ' ' || *s == '+' || *s == '\"')
         {
           sprintf (p, "%%%02X", *(unsigned char *)s);
           p += 3;
         {
           sprintf (p, "%%%02X", *(unsigned char *)s);
           p += 3;