When using EVP_PKEY_derive with a KDF set, a negative error from
ECDH_compute_key is silently ignored and the KDF is run on duff data
Thanks to github user tomykaira for the suggested fix.
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
diff --git a/crypto/ec/ec_pmeth.c b/crypto/ec/ec_pmeth.c
index 81ad4d4..e66e690 100644
--- a/crypto/ec/ec_pmeth.c
+++ b/crypto/ec/ec_pmeth.c
@@ -244,8 +244,8 @@
outlen = *keylen;
ret = ECDH_compute_key(key, outlen, pubkey, eckey, 0);
- if (ret < 0)
- return ret;
+ if (ret <= 0)
+ return 0;
*keylen = ret;
return 1;
}