aboutsummaryrefslogtreecommitdiffstats
path: root/scd/app-openpgp.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2018-02-22 15:19:56 +0000
committerWerner Koch <[email protected]>2018-02-22 15:19:56 +0000
commit20539ea5cad1903352e01ef95aecdda4d5cd999b (patch)
tree609042662948bcd256dd4400b64bdb5e656173e4 /scd/app-openpgp.c
parentbuild: Update autogen.sh to set a git PATCH prefix. (diff)
parentPost release updates. (diff)
downloadgnupg-20539ea5cad1903352e01ef95aecdda4d5cd999b.tar.gz
gnupg-20539ea5cad1903352e01ef95aecdda4d5cd999b.zip
Merge branch 'STABLE-BRANCH-2-2'
Diffstat (limited to 'scd/app-openpgp.c')
-rw-r--r--scd/app-openpgp.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index fb869b2bf..54f04c612 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -348,7 +348,8 @@ get_cached_data (app_t app, int tag,
err = iso7816_get_data (app->slot, exmode, tag, &p, &len);
if (err)
return err;
- *result = p;
+ if (len)
+ *result = p;
*resultlen = len;
/* Check whether we should cache this object. */
@@ -370,7 +371,10 @@ get_cached_data (app_t app, int tag,
c = xtrymalloc (sizeof *c + len);
if (c)
{
- memcpy (c->data, p, len);
+ if (len)
+ memcpy (c->data, p, len);
+ else
+ xfree (p);
c->length = len;
c->tag = tag;
c->next = app->app_local->cache;
@@ -2068,7 +2072,8 @@ pin2hash_if_kdf (app_t app, int chvno, char *pinvalue, int *r_pinlen)
size_t buflen;
if (app->app_local->extcap.kdf_do
- && (relptr = get_one_do (app, 0x00F9, &buffer, &buflen, NULL)))
+ && (relptr = get_one_do (app, 0x00F9, &buffer, &buflen, NULL))
+ && buflen == 110 && (buffer[2] == 0x03))
{
char *salt;
unsigned long s2k_count;