From d30fdae24b9549342183ac65cf1726f7ebcada9d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 4 Sep 2008 10:35:41 +0000 Subject: [PATCH] Workaround for a mingw runtime bug. --- doc/a-decade-of-gnupg.txt | 2 +- sm/ChangeLog | 4 ++++ sm/certdump.c | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/a-decade-of-gnupg.txt b/doc/a-decade-of-gnupg.txt index 7d625dfc6..17209bacc 100644 --- a/doc/a-decade-of-gnupg.txt +++ b/doc/a-decade-of-gnupg.txt @@ -198,7 +198,7 @@ Happy Hacking, === 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 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 + + * certdump.c (gpgsm_format_keydesc): Work around a mingw32 bug. + 2008-09-03 Werner Koch * 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;