summaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2008-09-04 12:35:41 +0200
committerWerner Koch <wk@gnupg.org>2008-09-04 12:35:41 +0200
commitd30fdae24b9549342183ac65cf1726f7ebcada9d (patch)
treedabb30909bff35568b33f45c3c5d4d2df61582b6 /sm
parentFix gpg-preset-passphrase bug. (diff)
downloadgnupg2-d30fdae24b9549342183ac65cf1726f7ebcada9d.tar.xz
gnupg2-d30fdae24b9549342183ac65cf1726f7ebcada9d.zip
Workaround for a mingw runtime bug.
Diffstat (limited to 'sm')
-rw-r--r--sm/ChangeLog4
-rw-r--r--sm/certdump.c8
2 files changed, 11 insertions, 1 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog
index 159a7342e..cc644d753 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -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
diff --git a/sm/certdump.c b/sm/certdump.c
index 91539017f..9dbd24566 100644
--- a/sm/certdump.c
+++ b/sm/certdump.c
@@ -979,7 +979,13 @@ gpgsm_format_keydesc (ksba_cert_t cert)
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;