summaryrefslogtreecommitdiffstats
path: root/scd
diff options
context:
space:
mode:
Diffstat (limited to 'scd')
-rw-r--r--scd/ChangeLog13
-rw-r--r--scd/apdu.c6
-rw-r--r--scd/app-openpgp.c9
-rw-r--r--scd/scdaemon.c2
4 files changed, 27 insertions, 3 deletions
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;