From 9fa1722f73f40b5db23553090658ad886ea916cf Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Sun, 3 Mar 2019 21:26:20 +0100 Subject: [PATCH] sc_bin_to_hex returns a Nul terminated string --- src/libopensc/pkcs15-din-66291.c | 2 +- src/libopensc/pkcs15-gemsafeGPK.c | 14 +++++++------- src/libopensc/pkcs15-openpgp.c | 2 +- src/libopensc/pkcs15-tcos.c | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/libopensc/pkcs15-din-66291.c b/src/libopensc/pkcs15-din-66291.c index 31894d5d..7a67e97f 100644 --- a/src/libopensc/pkcs15-din-66291.c +++ b/src/libopensc/pkcs15-din-66291.c @@ -251,7 +251,7 @@ sc_pkcs15emu_din_66291_init(sc_pkcs15_card_t *p15card) if (!p15card->tokeninfo->serial_number && SC_SUCCESS == sc_card_ctl(p15card->card, SC_CARDCTL_GET_SERIALNR, &serial)) { char serial_hex[SC_MAX_SERIALNR*2+2]; - sc_bin_to_hex(serial.value, serial.len , serial_hex, sizeof serial_hex - 1, 0); + sc_bin_to_hex(serial.value, serial.len , serial_hex, sizeof serial_hex, 0); p15card->tokeninfo->serial_number = strdup(serial_hex); } diff --git a/src/libopensc/pkcs15-gemsafeGPK.c b/src/libopensc/pkcs15-gemsafeGPK.c index e9a442dc..dca5b612 100644 --- a/src/libopensc/pkcs15-gemsafeGPK.c +++ b/src/libopensc/pkcs15-gemsafeGPK.c @@ -224,13 +224,13 @@ static int sc_pkcs15emu_gemsafeGPK_init(sc_pkcs15_card_t *p15card) p15card->tokeninfo->label = strdup("GemSAFE"); p15card->tokeninfo->manufacturer_id = strdup(MANU_ID); /* get serial number */ - r = sc_card_ctl(card, SC_CARDCTL_GET_SERIALNR, &serial); - if (r != SC_SUCCESS) - return SC_ERROR_INTERNAL; - r = sc_bin_to_hex(serial.value, serial.len, buf, sizeof(buf), 0); - if (r != SC_SUCCESS) - return SC_ERROR_INTERNAL; - p15card->tokeninfo->serial_number = strdup(buf); + r = sc_card_ctl(card, SC_CARDCTL_GET_SERIALNR, &serial); + if (r != SC_SUCCESS) + return SC_ERROR_INTERNAL; + r = sc_bin_to_hex(serial.value, serial.len, buf, sizeof(buf), 0); + if (r != SC_SUCCESS) + return SC_ERROR_INTERNAL; + p15card->tokeninfo->serial_number = strdup(buf); /* test if we have a gemsafe app df */ memset(&path, 0, sizeof(path)); diff --git a/src/libopensc/pkcs15-openpgp.c b/src/libopensc/pkcs15-openpgp.c index bd3d151e..87d36bf1 100644 --- a/src/libopensc/pkcs15-openpgp.c +++ b/src/libopensc/pkcs15-openpgp.c @@ -182,7 +182,7 @@ sc_pkcs15emu_openpgp_init(sc_pkcs15_card_t *p15card) unsigned short manuf_id = bebytes2ushort(card->serialnr.value); int j; - sc_bin_to_hex(card->serialnr.value, card->serialnr.len, string, sizeof(string)-1, 0); + sc_bin_to_hex(card->serialnr.value, card->serialnr.len, string, sizeof(string), 0); set_string(&p15card->tokeninfo->serial_number, string); for (j = 0; manuf_map[j].name != NULL; j++) { diff --git a/src/libopensc/pkcs15-tcos.c b/src/libopensc/pkcs15-tcos.c index c716bf73..04d1fe85 100644 --- a/src/libopensc/pkcs15-tcos.c +++ b/src/libopensc/pkcs15-tcos.c @@ -511,9 +511,9 @@ int sc_pkcs15emu_tcos_init_ex( sc_log(ctx, "unable to get ICCSN\n"); return SC_ERROR_WRONG_CARD; } - sc_bin_to_hex(serialnr.value, serialnr.len , serial, sizeof(serial), 0); + sc_bin_to_hex(serialnr.value, serialnr.len , serial, sizeof(serial), 0); serial[19] = '\0'; - p15card->tokeninfo->serial_number = strdup(serial); + p15card->tokeninfo->serial_number = strdup(serial); if(!detect_netkey(p15card)) return SC_SUCCESS; if(!detect_idkey(p15card)) return SC_SUCCESS;