Fix incrementing pointer instead of value
This was introduced by a hasty search-and-replace that didn't account for C's
operator precedence when changing those variables to pointer types.
diff --git a/ChangeLog b/ChangeLog
index 79f596d..60018b55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -63,7 +63,15 @@
* Reduce RAM consumption during session renegotiation by not storing
the peer CRT chain and session ticket twice.
-= mbed TLS 2.16.x branch released xxxx-xx-xx
+= mbed TLS 2.16.5 branch released xxxx-xx-xx
+
+Security
+ * Fix potential memory overread when performing an ECDSA signature
+ operation. The overread only happens with cryptographically low
+ probability (of the order of 2^-n where n is the bitsize of the curve)
+ unless the RNG is broken, and could result in information disclosure or
+ denial of service (application crash or extra resource consumption).
+ Reported by Peter and Auke (found using static analysis).
Bugfix
* Fix an unchecked call to mbedtls_md() in the x509write module.
diff --git a/library/ecdsa.c b/library/ecdsa.c
index 6577785..6cfaa08 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -297,7 +297,7 @@
*p_sign_tries = 0;
do
{
- if( *p_sign_tries++ > 10 )
+ if( (*p_sign_tries)++ > 10 )
{
ret = MBEDTLS_ERR_ECP_RANDOM_FAILED;
goto cleanup;
@@ -310,7 +310,7 @@
*p_key_tries = 0;
do
{
- if( *p_key_tries++ > 10 )
+ if( (*p_key_tries)++ > 10 )
{
ret = MBEDTLS_ERR_ECP_RANDOM_FAILED;
goto cleanup;