Skip to content
Permalink
Browse files Browse the repository at this point in the history
oberthur: Correctly check for return values
  • Loading branch information
Jakuje authored and frankmorgner committed Jan 22, 2021
1 parent ba85ae7 commit 1db8837
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions src/libopensc/pkcs15-oberthur.c
Expand Up @@ -304,7 +304,7 @@ sc_oberthur_read_file(struct sc_pkcs15_card *p15card, const char *in_path,
if (verify_pin && rv == SC_ERROR_SECURITY_STATUS_NOT_SATISFIED) {
struct sc_pkcs15_object *objs[0x10], *pin_obj = NULL;
const struct sc_acl_entry *acl = sc_file_get_acl_entry(file, SC_AC_OP_READ);
int ii;
int ii, nobjs;

if (acl == NULL) {
sc_file_free(file);
Expand All @@ -313,18 +313,19 @@ sc_oberthur_read_file(struct sc_pkcs15_card *p15card, const char *in_path,
LOG_FUNC_RETURN(ctx, SC_ERROR_INVALID_DATA);
}

rv = sc_pkcs15_get_objects(p15card, SC_PKCS15_TYPE_AUTH_PIN, objs, 0x10);
if (rv != SC_SUCCESS) {
nobjs = sc_pkcs15_get_objects(p15card, SC_PKCS15_TYPE_AUTH_PIN, objs, 0x10);
if (nobjs < 1) {
sc_file_free(file);
free(*out);
*out = NULL;
LOG_TEST_RET(ctx, rv, "Cannot read oberthur file: get AUTH objects error");
LOG_TEST_RET(ctx, SC_ERROR_DATA_OBJECT_NOT_FOUND,
"Cannot read oberthur file: get AUTH objects error");
}

for (ii=0; ii<rv; ii++) {
for (ii = 0; ii < nobjs; ii++) {
struct sc_pkcs15_auth_info *auth_info = (struct sc_pkcs15_auth_info *) objs[ii]->data;
sc_log(ctx, "compare PIN/ACL refs:%i/%i, method:%i/%i",
auth_info->attrs.pin.reference, acl->key_ref, auth_info->auth_method, acl->method);
auth_info->attrs.pin.reference, acl->key_ref, auth_info->auth_method, acl->method);
if (auth_info->attrs.pin.reference == (int)acl->key_ref && auth_info->auth_method == (unsigned)acl->method) {
pin_obj = objs[ii];
break;
Expand Down

0 comments on commit 1db8837

Please sign in to comment.