diff --git a/npa/src/npa.c b/npa/src/npa.c index ca6a7c3..440d2a4 100644 --- a/npa/src/npa.c +++ b/npa/src/npa.c @@ -484,28 +484,12 @@ static int npa_gen_auth_1_encrypted_nonce(struct sm_ctx *oldnpactx, *enc_nonce_len = l; err: - if (c_data) { - /* XXX - if (c_data->mapping_data) - ASN1_OCTET_STRING_free(c_data->mapping_data); - if (c_data->eph_pub_key) - ASN1_OCTET_STRING_free(c_data->eph_pub_key); - if (c_data->auth_token) - ASN1_OCTET_STRING_free(c_data->auth_token);*/ + if (c_data) NPA_GEN_AUTH_C_free(c_data); - } if (d) free(d); - if (r_data) { - /* XXX - if (r_data->mapping_data) - ASN1_OCTET_STRING_free(r_data->mapping_data); - if (r_data->eph_pub_key) - ASN1_OCTET_STRING_free(r_data->eph_pub_key); - if (r_data->auth_token) - ASN1_OCTET_STRING_free(r_data->auth_token);*/ + if (r_data) NPA_GEN_AUTH_R_free(r_data); - } /* XXX */ /*if (apdu.resp)*/ /*free(apdu.resp);*/ diff --git a/npa/src/sm.c b/npa/src/sm.c index d04a4c0..dba1a12 100644 --- a/npa/src/sm.c +++ b/npa/src/sm.c @@ -528,7 +528,7 @@ static int sm_decrypt(const struct sm_ctx *ctx, sc_card_t *card, goto err; } - if (apdu->resplen < r) { + if (apdu->resplen < r || (r && !apdu->resp)) { sc_debug(card->ctx, SC_LOG_DEBUG_VERBOSE, "Response of SM APDU too long"); r = SC_ERROR_OUT_OF_MEMORY; goto err;