From 7c497b324f8a79cec3dc374373efe6e2040bab2b Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Wed, 28 Jan 2015 05:51:00 +0100 Subject: [PATCH] fixed not null terminated buffer --- src/libopensc/card.c | 5 +++-- src/libopensc/iasecc-sm.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libopensc/card.c b/src/libopensc/card.c index f909bf85..6b384069 100644 --- a/src/libopensc/card.c +++ b/src/libopensc/card.c @@ -29,6 +29,7 @@ #include "internal.h" #include "asn1.h" +#include "common/compat_strlcpy.h" /* #define INVALIDATE_CARD_CACHE_IN_UNLOCK @@ -1258,8 +1259,8 @@ sc_card_sm_check(struct sc_card *card) rv = sc_card_sm_load(card, module_path, module_name); LOG_TEST_RET(ctx, rv, "Failed to load SM module"); - strncpy(card->sm_ctx.module.filename, module_name, sizeof(card->sm_ctx.module.filename)); - strncpy(card->sm_ctx.config_section, sm, sizeof(card->sm_ctx.config_section)); + strlcpy(card->sm_ctx.module.filename, module_name, sizeof(card->sm_ctx.module.filename)); + strlcpy(card->sm_ctx.config_section, sm, sizeof(card->sm_ctx.config_section)); /* allocate resources for the external SM module */ sc_log(ctx, "'module_init' handler %p", card->sm_ctx.module.ops.module_init); diff --git a/src/libopensc/iasecc-sm.c b/src/libopensc/iasecc-sm.c index 7fdffbdc..bfa57133 100644 --- a/src/libopensc/iasecc-sm.c +++ b/src/libopensc/iasecc-sm.c @@ -25,6 +25,7 @@ #include "internal.h" #include "asn1.h" #include "cardctl.h" +#include "common/compat_strlcpy.h" #include "sm.h" #include "iasecc.h" @@ -156,7 +157,7 @@ iasecc_sm_external_authentication(struct sc_card *card, unsigned skey_ref, int * if (card->sm_ctx.sm_mode == SM_MODE_NONE) LOG_TEST_RET(ctx, SC_ERROR_NOT_SUPPORTED, "Cannot do 'External Authentication' without SM activated "); - strncpy(sm_info->config_section, card->sm_ctx.config_section, sizeof(sm_info->config_section)); + strlcpy(sm_info->config_section, card->sm_ctx.config_section, sizeof(sm_info->config_section)); sm_info->cmd = SM_CMD_EXTERNAL_AUTH; sm_info->serialnr = card->serialnr; sm_info->card_type = card->type; @@ -296,7 +297,7 @@ iasecc_sm_initialize(struct sc_card *card, unsigned se_num, unsigned cmd) LOG_FUNC_CALLED(ctx); - strncpy(sm_info->config_section, card->sm_ctx.config_section, sizeof(sm_info->config_section)); + strlcpy(sm_info->config_section, card->sm_ctx.config_section, sizeof(sm_info->config_section)); sm_info->cmd = cmd; sm_info->serialnr = card->serialnr; sm_info->card_type = card->type;