card-authentic: Avoid potential memory leaks

This commit is contained in:
Jakub Jelen 2019-08-26 13:32:46 +02:00 committed by Frank Morgner
parent 1b32bfe4e5
commit 070a37cebd
1 changed files with 14 additions and 11 deletions

View File

@ -1709,22 +1709,22 @@ authentic_manage_sdo_encode_prvkey(struct sc_card *card, struct sc_pkcs15_prkey
rsa = prvkey->u.rsa;
/* Encode private RSA key part */
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PRIVATE_P, rsa.p.data, rsa.p.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA P encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA P encode error");
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PRIVATE_Q, rsa.q.data, rsa.q.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA Q encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA Q encode error");
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PRIVATE_PQ, rsa.iqmp.data, rsa.iqmp.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA PQ encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA PQ encode error");
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PRIVATE_DP1, rsa.dmp1.data, rsa.dmp1.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA DP1 encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA DP1 encode error");
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PRIVATE_DQ1, rsa.dmq1.data, rsa.dmq1.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA DQ1 encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA DQ1 encode error");
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PRIVATE, blob, blob_len, &blob01, &blob01_len);
LOG_TEST_RET(ctx, rv, "SDO RSA Private encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA Private encode error");
free (blob);
blob = NULL;
@ -1735,24 +1735,27 @@ authentic_manage_sdo_encode_prvkey(struct sc_card *card, struct sc_pkcs15_prkey
"modulus.len:%"SC_FORMAT_LEN_SIZE_T"u blob_len:%"SC_FORMAT_LEN_SIZE_T"u",
rsa.modulus.len, blob_len);
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PUBLIC_MODULUS, rsa.modulus.data, rsa.modulus.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA Modulus encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA Modulus encode error");
sc_log(ctx,
"exponent.len:%"SC_FORMAT_LEN_SIZE_T"u blob_len:%"SC_FORMAT_LEN_SIZE_T"u",
rsa.exponent.len, blob_len);
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PUBLIC_EXPONENT, rsa.exponent.data, rsa.exponent.len, &blob, &blob_len);
LOG_TEST_RET(ctx, rv, "SDO RSA Exponent encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA Exponent encode error");
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA_PUBLIC, blob, blob_len, &blob01, &blob01_len);
LOG_TEST_RET(ctx, rv, "SDO RSA Private encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA Private encode error");
free (blob);
blob = NULL;
blob_len = 0;
rv = authentic_update_blob(ctx, AUTHENTIC_TAG_RSA, blob01, blob01_len, out, out_len);
LOG_TEST_RET(ctx, rv, "SDO RSA encode error");
LOG_TEST_GOTO_ERR(ctx, rv, "SDO RSA encode error");
err:
free(blob01);
free(blob);
LOG_FUNC_RETURN(ctx, rv);
}