Add double check on bad signature flagging
diff --git a/library/x509_crt.c b/library/x509_crt.c
index d75e304..c0914fa 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -3385,6 +3385,7 @@
     int parent_is_trusted;
     int child_is_trusted;
     int signature_is_good;
+    volatile int signature_is_good_fi;
     unsigned self_cnt;
 
 #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)
@@ -3527,9 +3528,16 @@
         }
 
         /* signature was checked while searching parent */
-        if( signature_is_good != X509_SIGNATURE_IS_GOOD )
+        signature_is_good_fi = signature_is_good;
+        if( signature_is_good_fi != X509_SIGNATURE_IS_GOOD )
+        {
             *flags |= MBEDTLS_X509_BADCERT_NOT_TRUSTED;
 
+            mbedtls_platform_enforce_volatile_reads();
+            if( signature_is_good_fi != X509_SIGNATURE_IS_GOOD )
+                *flags |= MBEDTLS_X509_BADCERT_NOT_TRUSTED;
+        }
+
         {
             mbedtls_pk_context *parent_pk;
             ret = mbedtls_x509_crt_pk_acquire( parent_crt, &parent_pk );