aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scd/app-openpgp.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c
index 26c036b2e..8085fa812 100644
--- a/scd/app-openpgp.c
+++ b/scd/app-openpgp.c
@@ -6080,9 +6080,16 @@ app_select_openpgp (app_t app)
app->appversion |= buffer[7];
manufacturer = (buffer[8]<<8 | buffer[9]);
- xfree (app->card->serialno);
- app->card->serialno = buffer;
- app->card->serialnolen = buflen;
+ /* For Yubikey, serialno is set in app.c, already. */
+ if (app->card->cardtype == CARDTYPE_YUBIKEY)
+ xfree (buffer);
+ else
+ {
+ xfree (app->card->serialno);
+ app->card->serialno = buffer;
+ app->card->serialnolen = buflen;
+ }
+
buffer = NULL;
app->app_local = xtrycalloc (1, sizeof *app->app_local);
if (!app->app_local)