summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--THANKS3
-rw-r--r--TODO2
-rw-r--r--scd/ChangeLog13
-rw-r--r--scd/apdu.c6
-rw-r--r--scd/app-openpgp.c9
-rw-r--r--scd/scdaemon.c2
-rw-r--r--sm/ChangeLog8
-rw-r--r--sm/call-dirmngr.c2
-rw-r--r--sm/certdump.c4
-rw-r--r--sm/keylist.c26
-rw-r--r--sm/server.c2
11 files changed, 62 insertions, 15 deletions
diff --git a/THANKS b/THANKS
index 57add954b..408497046 100644
--- a/THANKS
+++ b/THANKS
@@ -1,7 +1,8 @@
Alexander Belopolsky belopolsky at mac.com
Andrew J. Schorr aschorr at telemetry-investments.com
-Kazu Yamamoto kazu@iij.ad.jp
+Charly Avital shavital at mac.com
+Kazu Yamamoto kazu at iij.ad.jp
Michael Nottebrock michaelnottebrock at gmx.net
Ray Link rlink at pitt.edu
Richard Lefebvre rick at cerca.umontreal.ca
diff --git a/TODO b/TODO
index 5f1b57a0f..478f437c2 100644
--- a/TODO
+++ b/TODO
@@ -103,3 +103,5 @@ might want to have an agent context for each service request
+* sm/
+** --include-certs seems to be a dummy option.
diff --git a/scd/ChangeLog b/scd/ChangeLog
index 0f7e4d2fa..970335aef 100644
--- a/scd/ChangeLog
+++ b/scd/ChangeLog
@@ -1,3 +1,16 @@
+2005-07-05 Werner Koch <wk@g10code.com>
+
+ * app-openpgp.c (do_readkey): Return a mallcoed copy of the key as
+ required by the description. Thanks to Moritz for tracking this
+ problem down.
+
+2005-06-21 Werner Koch <wk@g10code.com>
+
+ * scdaemon.c (main): ifdef call to ccid_set_debug_level.
+
+ * apdu.c (reset_pcsc_reader, open_pcsc_reader): Cast size_t to
+ ulong for printf.
+
2005-06-06 Werner Koch <wk@g10code.com>
* scdaemon.c (main): New option --debug-allow-core-dump.
diff --git a/scd/apdu.c b/scd/apdu.c
index 975fffa24..79022f21b 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -809,7 +809,8 @@ reset_pcsc_reader (int slot)
len -= 4; /* Already read the error code. */
if (len > DIM (slotp->atr))
{
- log_error ("PC/SC returned a too large ATR (len=%x)\n", len);
+ log_error ("PC/SC returned a too large ATR (len=%lx)\n",
+ (unsigned long)len);
sw = SW_HOST_GENERAL_ERROR;
goto command_failed;
}
@@ -1425,7 +1426,8 @@ open_pcsc_reader (const char *portstr)
len -= 4; /* Already read the error code. */
if (len > DIM (slotp->atr))
{
- log_error ("PC/SC returned a too large ATR (len=%x)\n", len);
+ log_error ("PC/SC returned a too large ATR (len=%lx)\n",
+ (unsigned long)len);
goto command_failed;
}
err = (msgbuf[5] << 24) | (msgbuf[6] << 16) | (msgbuf[7] << 8 ) | msgbuf[8];
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 11e6eebaf..bd56fb99d 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -1230,8 +1230,15 @@ do_readkey (app_t app, const char *keyid, unsigned char **pk, size_t *pklen)
buf = app->app_local->pk[keyno-1].key;
if (!buf)
return gpg_error (GPG_ERR_NO_PUBKEY);
- *pk = buf;
*pklen = app->app_local->pk[keyno-1].keylen;;
+ *pk = xtrymalloc (*pklen);
+ if (!*pk)
+ {
+ err = gpg_error_from_errno (errno);
+ *pklen = 0;
+ return err;
+ }
+ memcpy (*pk, buf, *pklen);
return 0;
#else
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
diff --git a/scd/scdaemon.c b/scd/scdaemon.c
index c75e87a62..c6995abcc 100644
--- a/scd/scdaemon.c
+++ b/scd/scdaemon.c
@@ -456,7 +456,9 @@ main (int argc, char **argv )
allow_coredump = 1;
break;
case oDebugCCIDDriver:
+#ifdef HAVE_LIBUSB
ccid_set_debug_level (ccid_set_debug_level (-1)+1);
+#endif /*HAVE_LIBUSB*/
break;
case oDebugDisableTicker: ticker_disabled = 1; break;
diff --git a/sm/ChangeLog b/sm/ChangeLog
index f1eb49c2c..cefa77e32 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,11 @@
+2005-07-20 Werner Koch <wk@g10code.com>
+
+ * keylist.c (email_kludge): Reworked.
+
+ * certdump.c (gpgsm_print_serial, gpgsm_dump_serial): Cast printf
+ arg to unsigned.
+ * call-dirmngr.c (gpgsm_dirmngr_run_command): Ditto
+
2005-07-19 Werner Koch <wk@g10code.com>
* fingerprint.c (gpgsm_get_certid): Cast printf arg to unsigned.
diff --git a/sm/call-dirmngr.c b/sm/call-dirmngr.c
index 847e78490..ead117dfd 100644
--- a/sm/call-dirmngr.c
+++ b/sm/call-dirmngr.c
@@ -827,7 +827,7 @@ gpgsm_dirmngr_run_command (CTRL ctrl, const char *command,
*p++ = '+';
else if (!isprint (*s) || *s == '+')
{
- sprintf (p, "%%%02X", *s);
+ sprintf (p, "%%%02X", *(const unsigned char *)s);
p += 3;
}
else
diff --git a/sm/certdump.c b/sm/certdump.c
index 98f019c4a..aae60e020 100644
--- a/sm/certdump.c
+++ b/sm/certdump.c
@@ -70,7 +70,7 @@ gpgsm_print_serial (FILE *fp, ksba_const_sexp_t sn)
else
{
for (p++; n; n--, p++)
- fprintf (fp, "%02X", *p);
+ fprintf (fp, "%02X", *(const unsigned char*)p);
}
}
}
@@ -98,7 +98,7 @@ gpgsm_dump_serial (ksba_const_sexp_t sn)
else
{
for (p++; n; n--, p++)
- log_printf ("%02X", *p);
+ log_printf ("%02X", *(const unsigned char *)p);
}
}
}
diff --git a/sm/keylist.c b/sm/keylist.c
index a0ac73fb3..8a4eb3cdb 100644
--- a/sm/keylist.c
+++ b/sm/keylist.c
@@ -251,30 +251,42 @@ print_time (gnupg_isotime_t t, FILE *fp)
}
-/* return an allocated string with the email address extracted from a
+/* Return an allocated string with the email address extracted from a
DN */
static char *
email_kludge (const char *name)
{
- const char *p;
+ const char *p, *string;
unsigned char *buf;
int n;
- if (strncmp (name, "1.2.840.113549.1.9.1=#", 22))
- return NULL;
+ string = name;
+ for (;;)
+ {
+ p = strstr (string, "1.2.840.113549.1.9.1=#");
+ if (!p)
+ return NULL;
+ if (p == name || (p > string+1 && p[-1] == ',' && p[-2] != '\\'))
+ {
+ name = p + 22;
+ break;
+ }
+ string = p + 22;
+ }
+
+
/* This looks pretty much like an email address in the subject's DN
we use this to add an additional user ID entry. This way,
openSSL generated keys get a nicer and usable listing */
- name += 22;
for (n=0, p=name; hexdigitp (p) && hexdigitp (p+1); p +=2, n++)
;
- if (*p != '#' || !n)
+ if (!n)
return NULL;
buf = xtrymalloc (n+3);
if (!buf)
return NULL; /* oops, out of core */
*buf = '<';
- for (n=1, p=name; *p != '#'; p +=2, n++)
+ for (n=1, p=name; hexdigitp (p); p +=2, n++)
buf[n] = xtoi_2 (p);
buf[n++] = '>';
buf[n] = 0;
diff --git a/sm/server.c b/sm/server.c
index b3816d3d9..87a06ee4e 100644
--- a/sm/server.c
+++ b/sm/server.c
@@ -1109,7 +1109,7 @@ write_status_text_and_buffer ( int no, const char *string,
if (s != buffer)
fwrite (buffer, s-buffer, 1, statusfp );
if ( esc ) {
- fprintf (statusfp, "%%%02X", *(const byte*)s );
+ fprintf (statusfp, "%%%02X", *(const unsigned char*)s );
s++; n--;
}
buffer = s;