Merge branch 'STABLE-BRANCH-2-2'
[gnupg.git] / scd / app-openpgp.c
index fb869b2..54f04c6 100644 (file)
@@ -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;