Fix sig->tag update in mbedtls_x509_get_sig()
diff --git a/ChangeLog b/ChangeLog
index a4f98ce..e74640d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,9 @@
enabled unless others were also present. Found by David Fernandez. #428
* Fix for out-of-tree builds using CMake. Found by jwurzer, and fix based on
a contribution from Tobias Tangemann. #541
+ * Fix mbedtls_x509_get_sig() to update the ASN1 type in the mbedtls_x509_buf
+ data structure until after error checks are successful. Found by
+ subramanyam-c.
Changes
* Extended test coverage of special cases, and added new timing test suite.
diff --git a/library/x509.c b/library/x509.c
index bc3bfe0..6df5dc8 100644
--- a/library/x509.c
+++ b/library/x509.c
@@ -559,16 +559,18 @@
{
int ret;
size_t len;
+ int tag_type;
if( ( end - *p ) < 1 )
return( MBEDTLS_ERR_X509_INVALID_SIGNATURE +
MBEDTLS_ERR_ASN1_OUT_OF_DATA );
- sig->tag = **p;
+ tag_type = **p;
if( ( ret = mbedtls_asn1_get_bitstring_null( p, end, &len ) ) != 0 )
return( MBEDTLS_ERR_X509_INVALID_SIGNATURE + ret );
+ sig->tag = tag_type;
sig->len = len;
sig->p = *p;