summaryrefslogtreecommitdiff
path: root/net/bluetooth/smp.c
diff options
context:
space:
mode:
authorTudor Ambarus <tudor.ambarus@microchip.com>2017-09-28 17:14:52 +0300
committerMarcel Holtmann <marcel@holtmann.org>2017-10-06 21:35:47 +0300
commita297641610963bbb238ea77b32a2e958c4f7b184 (patch)
tree6a2146816ab8ceeeb884efb835491614961370f4 /net/bluetooth/smp.c
parent47eb2ac809189e0a60ad78eec6db9e84004e11be (diff)
downloadlinux-a297641610963bbb238ea77b32a2e958c4f7b184.tar.xz
Bluetooth: ecdh_helper - reveal error codes
ecdh_helper functions were hiding the error codes and chose to return the return value of an relational operator, "==". Remove the unnecessary query and reveal the error codes. While updating the return values, code in a way that compilers will warn in case of uninitialized err. Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/smp.c')
-rw-r--r--net/bluetooth/smp.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 31b64bc3cf16..af7e6100e55b 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -577,9 +577,10 @@ int smp_generate_oob(struct hci_dev *hdev, u8 hash[16], u8 rand[16])
get_random_bytes(smp->local_sk, 32);
/* Generate local key pair for Secure Connections */
- if (!generate_ecdh_keys(smp->tfm_ecdh, smp->local_pk,
- smp->local_sk))
- return -EIO;
+ err = generate_ecdh_keys(smp->tfm_ecdh, smp->local_pk,
+ smp->local_sk);
+ if (err)
+ return err;
/* This is unlikely, but we need to check that
* we didn't accidentially generate a debug key.
@@ -1919,8 +1920,8 @@ static u8 sc_send_public_key(struct smp_chan *smp)
get_random_bytes(smp->local_sk, 32);
/* Generate local key pair for Secure Connections */
- if (!generate_ecdh_keys(smp->tfm_ecdh, smp->local_pk,
- smp->local_sk))
+ if (generate_ecdh_keys(smp->tfm_ecdh, smp->local_pk,
+ smp->local_sk))
return SMP_UNSPECIFIED;
/* This is unlikely, but we need to check that
@@ -3532,11 +3533,13 @@ static inline void swap_digits(u64 *in, u64 *out, unsigned int ndigits)
static int __init test_debug_key(struct crypto_kpp *tfm_ecdh)
{
u8 pk[64], sk[32];
+ int err;
swap_digits((u64 *)debug_sk, (u64 *)sk, 4);
- if (!generate_ecdh_keys(tfm_ecdh, pk, sk))
- return -EINVAL;
+ err = generate_ecdh_keys(tfm_ecdh, pk, sk);
+ if (err)
+ return err;
if (crypto_memneq(sk, debug_sk, 32))
return -EINVAL;