Skip to content

Commit

Permalink
KEYS: asymmetric: Fix error codes
Browse files Browse the repository at this point in the history
These error paths should return the appropriate error codes instead of
returning success.

Fixes: 63ba4d6 ("KEYS: asymmetric: Use new crypto interface without scatterlists")
Signed-off-by: Dan Carpenter <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
Dan Carpenter authored and herbertx committed Jul 7, 2023
1 parent d3dccb0 commit 9e9311e
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions crypto/asymmetric_keys/public_key.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,10 @@ static int software_key_query(const struct kernel_pkey_params *params,

if (issig) {
sig = crypto_alloc_sig(alg_name, 0, 0);
if (IS_ERR(sig))
if (IS_ERR(sig)) {
ret = PTR_ERR(sig);
goto error_free_key;
}

if (pkey->key_is_private)
ret = crypto_sig_set_privkey(sig, key, pkey->keylen);
Expand All @@ -208,8 +210,10 @@ static int software_key_query(const struct kernel_pkey_params *params,
}
} else {
tfm = crypto_alloc_akcipher(alg_name, 0, 0);
if (IS_ERR(tfm))
if (IS_ERR(tfm)) {
ret = PTR_ERR(tfm);
goto error_free_key;
}

if (pkey->key_is_private)
ret = crypto_akcipher_set_priv_key(tfm, key, pkey->keylen);
Expand Down Expand Up @@ -300,8 +304,10 @@ static int software_key_eds_op(struct kernel_pkey_params *params,

if (issig) {
sig = crypto_alloc_sig(alg_name, 0, 0);
if (IS_ERR(sig))
if (IS_ERR(sig)) {
ret = PTR_ERR(sig);
goto error_free_key;
}

if (pkey->key_is_private)
ret = crypto_sig_set_privkey(sig, key, pkey->keylen);
Expand All @@ -313,8 +319,10 @@ static int software_key_eds_op(struct kernel_pkey_params *params,
ksz = crypto_sig_maxsize(sig);
} else {
tfm = crypto_alloc_akcipher(alg_name, 0, 0);
if (IS_ERR(tfm))
if (IS_ERR(tfm)) {
ret = PTR_ERR(tfm);
goto error_free_key;
}

if (pkey->key_is_private)
ret = crypto_akcipher_set_priv_key(tfm, key, pkey->keylen);
Expand Down Expand Up @@ -411,8 +419,10 @@ int public_key_verify_signature(const struct public_key *pkey,

key = kmalloc(pkey->keylen + sizeof(u32) * 2 + pkey->paramlen,
GFP_KERNEL);
if (!key)
if (!key) {
ret = -ENOMEM;
goto error_free_tfm;
}

memcpy(key, pkey->key, pkey->keylen);
ptr = key + pkey->keylen;
Expand Down

0 comments on commit 9e9311e

Please sign in to comment.