[pkg-opensc-commit] [opensc] 236/295: fixed more coverity issues
Eric Dorland
eric at moszumanska.debian.org
Sat Jun 24 21:11:35 UTC 2017
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository opensc.
commit 9d15326de1779209d929a4642a53a252fc4bd7dc
Author: Frank Morgner <frankmorgner at gmail.com>
Date: Thu Apr 13 12:46:05 2017 +0200
fixed more coverity issues
---
src/libopensc/card-npa.c | 10 +++++-----
src/libopensc/card-sc-hsm.c | 6 ++++--
src/libopensc/ctx.c | 6 ++----
src/libopensc/iso7816.c | 3 ++-
src/libopensc/pkcs15.c | 8 ++++----
src/libopensc/reader-tr03119.c | 4 ++--
src/pkcs11/misc.c | 12 +++++++-----
src/sm/sm-eac.c | 5 +++--
src/sm/sm-iso.c | 2 +-
9 files changed, 30 insertions(+), 26 deletions(-)
diff --git a/src/libopensc/card-npa.c b/src/libopensc/card-npa.c
index 385d3a5..c9067b1 100644
--- a/src/libopensc/card-npa.c
+++ b/src/libopensc/card-npa.c
@@ -117,7 +117,7 @@ static int npa_load_options(sc_context_t *ctx, struct npa_drv_data *drv_data)
if (!fread_to_eof(file,
(unsigned char **) &drv_data->st_dv_certificate,
&drv_data->st_dv_certificate_len))
- sc_log(ctx, "Waring: Could not read %s.\n", file);
+ sc_log(ctx, "Warning: Could not read %s.\n", file);
}
if (!drv_data->st_certificate
@@ -126,7 +126,7 @@ static int npa_load_options(sc_context_t *ctx, struct npa_drv_data *drv_data)
if (!fread_to_eof(file,
(unsigned char **) &drv_data->st_certificate,
&drv_data->st_certificate_len))
- sc_log(ctx, "Waring: Could not read %s.\n", file);
+ sc_log(ctx, "Warning: Could not read %s.\n", file);
}
if (!drv_data->st_key
@@ -135,7 +135,7 @@ static int npa_load_options(sc_context_t *ctx, struct npa_drv_data *drv_data)
if (!fread_to_eof(file,
(unsigned char **) &drv_data->st_key,
&drv_data->st_key_len))
- sc_log(ctx, "Waring: Could not read %s.\n", file);
+ sc_log(ctx, "Warning: Could not read %s.\n", file);
}
}
@@ -684,8 +684,8 @@ static int npa_logout(sc_card_t *card)
* disable SM on the reader. */
sc_format_apdu(card, &apdu, SC_APDU_CASE_1, 0xA4, 0x00, 0x00);
apdu.cla = 0x0C;
- sc_transmit_apdu(card, &apdu);
- /* ignore result */
+ if (SC_SUCCESS != sc_transmit_apdu(card, &apdu))
+ sc_log(card->ctx, "Warning: Could not logout.");
}
return sc_select_file(card, sc_get_mf_path(), NULL);
}
diff --git a/src/libopensc/card-sc-hsm.c b/src/libopensc/card-sc-hsm.c
index d7714e7..a469abd 100644
--- a/src/libopensc/card-sc-hsm.c
+++ b/src/libopensc/card-sc-hsm.c
@@ -538,11 +538,12 @@ static int sc_hsm_compute_signature(sc_card_t *card,
sc_apdu_t apdu;
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
u8 sbuf[SC_MAX_APDU_BUFFER_SIZE];
- sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
+ sc_hsm_private_data_t *priv;
if (card == NULL || data == NULL || out == NULL) {
return SC_ERROR_INVALID_ARGUMENTS;
}
+ priv = (sc_hsm_private_data_t *) card->drv_data;
if (priv->env == NULL) {
LOG_FUNC_RETURN(card->ctx, SC_ERROR_OBJECT_NOT_FOUND);
@@ -590,12 +591,13 @@ static int sc_hsm_decipher(sc_card_t *card, const u8 * crgram, size_t crgram_len
size_t len;
sc_apdu_t apdu;
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
- sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
+ sc_hsm_private_data_t *priv;
if (card == NULL || crgram == NULL || out == NULL) {
return SC_ERROR_INVALID_ARGUMENTS;
}
LOG_FUNC_CALLED(card->ctx);
+ priv = (sc_hsm_private_data_t *) card->drv_data;
sc_format_apdu(card, &apdu, SC_APDU_CASE_4, 0x62, priv->env->key_ref[0], priv->algorithm);
apdu.cla = 0x80;
diff --git a/src/libopensc/ctx.c b/src/libopensc/ctx.c
index 1f91dff..1e3d0db 100644
--- a/src/libopensc/ctx.c
+++ b/src/libopensc/ctx.c
@@ -526,8 +526,6 @@ static int load_card_drivers(sc_context_t *ctx, struct _sc_ctx_options *opts)
ctx->card_drivers[drv_count] = func();
if (ctx->card_drivers[drv_count] == NULL) {
sc_log(ctx, "Driver '%s' not available.", ent->name);
- if (dll)
- sc_dlclose(dll);
continue;
}
@@ -818,8 +816,8 @@ int sc_context_create(sc_context_t **ctx_out, const sc_context_param_t *parm)
}
}
if (opts.forced_card_driver) {
- /* FIXME: check return value? */
- sc_set_card_driver(ctx, opts.forced_card_driver);
+ if (SC_SUCCESS != sc_set_card_driver(ctx, opts.forced_card_driver))
+ sc_log(ctx, "Warning: Could not load %s.", opts.forced_card_driver);
free(opts.forced_card_driver);
}
del_drvs(&opts);
diff --git a/src/libopensc/iso7816.c b/src/libopensc/iso7816.c
index 3edb582..b9127d3 100644
--- a/src/libopensc/iso7816.c
+++ b/src/libopensc/iso7816.c
@@ -397,7 +397,8 @@ iso7816_process_fci(struct sc_card *card, struct sc_file *file,
sc_log(ctx, " EF structure: %d", byte & 0x07);
sc_log(ctx, " tag 0x82: 0x%02x", byte);
/* FIXME: check return value? */
- sc_file_set_type_attr(file, &byte, 1);
+ if (SC_SUCCESS != sc_file_set_type_attr(file, &byte, 1))
+ sc_log(ctx, "Warning: Could not set file attributes");
}
}
diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c
index f2249db..e9317f9 100644
--- a/src/libopensc/pkcs15.c
+++ b/src/libopensc/pkcs15.c
@@ -2285,15 +2285,16 @@ int
sc_pkcs15_read_file(struct sc_pkcs15_card *p15card, const struct sc_path *in_path,
unsigned char **buf, size_t *buflen)
{
- struct sc_context *ctx = p15card->card->ctx;
+ struct sc_context *ctx;
struct sc_file *file = NULL;
unsigned char *data = NULL;
size_t len = 0, offset = 0;
int r;
- if (p15card == NULL || in_path == NULL || buf == NULL) {
+ if (p15card == NULL || p15card->card == NULL || in_path == NULL || buf == NULL) {
return SC_ERROR_INVALID_ARGUMENTS;
}
+ ctx = p15card->card->ctx;
LOG_FUNC_CALLED(ctx);
sc_log(ctx, "path=%s, index=%u, count=%d", sc_print_path(in_path), in_path->index, in_path->count);
@@ -2354,7 +2355,6 @@ sc_pkcs15_read_file(struct sc_pkcs15_card *p15card, const struct sc_path *in_pat
if (r == SC_ERROR_RECORD_NOT_FOUND)
break;
if (r < 0) {
- free(data);
goto fail_unlock;
}
if (r < 2)
@@ -2376,7 +2376,6 @@ sc_pkcs15_read_file(struct sc_pkcs15_card *p15card, const struct sc_path *in_pat
else {
r = sc_read_binary(p15card->card, offset, data, len, 0);
if (r < 0) {
- free(data);
goto fail_unlock;
}
/* sc_read_binary may return less than requested */
@@ -2395,6 +2394,7 @@ sc_pkcs15_read_file(struct sc_pkcs15_card *p15card, const struct sc_path *in_pat
LOG_FUNC_RETURN(ctx, SC_SUCCESS);
fail_unlock:
+ free(data);
sc_file_free(file);
sc_unlock(p15card->card);
LOG_FUNC_RETURN(ctx, r);
diff --git a/src/libopensc/reader-tr03119.c b/src/libopensc/reader-tr03119.c
index 2aada6e..7a9d4a4 100644
--- a/src/libopensc/reader-tr03119.c
+++ b/src/libopensc/reader-tr03119.c
@@ -987,11 +987,11 @@ void sc_detect_escape_cmds(sc_reader_t *reader)
}
}
- if (error) {
+ if (error && reader) {
sc_debug(reader->ctx, SC_LOG_DEBUG_NORMAL,
"%d escape command%s failed, need to reset the card",
error, error == 1 ? "" : "s");
- if (reader && reader->ops && reader->ops->transmit) {
+ if (reader->ops && reader->ops->transmit) {
memset(&apdu, 0, sizeof(apdu));
apdu.cse = SC_APDU_CASE_3_SHORT;
apdu.cla = 0x00;
diff --git a/src/pkcs11/misc.c b/src/pkcs11/misc.c
index 02c26ed..44fab3c 100644
--- a/src/pkcs11/misc.c
+++ b/src/pkcs11/misc.c
@@ -186,12 +186,14 @@ CK_RV push_login_state(struct sc_pkcs11_slot *slot,
goto err;
}
- login->pPin = sc_mem_alloc_secure(context, (sizeof *pPin)*ulPinLen);
- if (login->pPin == NULL) {
- goto err;
+ if (pPin && ulPinLen) {
+ login->pPin = sc_mem_alloc_secure(context, (sizeof *pPin)*ulPinLen);
+ if (login->pPin == NULL) {
+ goto err;
+ }
+ memcpy(login->pPin, pPin, (sizeof *pPin)*ulPinLen);
+ login->ulPinLen = ulPinLen;
}
- memcpy(login->pPin, pPin, (sizeof *pPin)*ulPinLen);
- login->ulPinLen = ulPinLen;
login->userType = userType;
if (0 > list_append(&slot->logins, login)) {
diff --git a/src/sm/sm-eac.c b/src/sm/sm-eac.c
index a41649b..c51b4b8 100644
--- a/src/sm/sm-eac.c
+++ b/src/sm/sm-eac.c
@@ -1051,7 +1051,7 @@ int perform_pace(sc_card_t *card,
int r;
const unsigned char *pp;
- if (!card || !pace_output)
+ if (!card || !card->reader || !card->reader->ops || !pace_output)
return SC_ERROR_INVALID_ARGUMENTS;
/* show description in advance to give the user more time to read it...
@@ -2346,7 +2346,8 @@ int perform_pace(sc_card_t *card,
{
int r;
- if (card->reader->capabilities & SC_READER_CAP_PACE_GENERIC
+ if (card && card->reader
+ && card->reader->capabilities & SC_READER_CAP_PACE_GENERIC
&& card->reader->ops->perform_pace) {
r = card->reader->ops->perform_pace(card->reader, &pace_input, pace_output);
} else {
diff --git a/src/sm/sm-iso.c b/src/sm/sm-iso.c
index c6c1435..2f419cb 100644
--- a/src/sm/sm-iso.c
+++ b/src/sm/sm-iso.c
@@ -690,7 +690,7 @@ int iso_get_sm_apdu(struct sc_card *card, struct sc_apdu *apdu, struct sc_apdu *
int iso_free_sm_apdu(struct sc_card *card, struct sc_apdu *apdu, struct sc_apdu **sm_apdu)
{
- struct sc_apdu *p = *sm_apdu;
+ struct sc_apdu *p;
int r;
if (!sm_apdu)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/opensc.git
More information about the pkg-opensc-commit
mailing list