- Fixed identification of non-critical CA certificates

diff --git a/library/x509parse.c b/library/x509parse.c
index 62c2947..7a5fdad 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -724,7 +724,6 @@
 
 static int x509_get_basic_constraints( unsigned char **p,
                                        const unsigned char *end,
-                                       int is_critical,
                                        int *ca_istrue,
                                        int *max_pathlen )
 {
@@ -735,7 +734,7 @@
      *      cA                      BOOLEAN DEFAULT FALSE,
      *      pathLenConstraint       INTEGER (0..MAX) OPTIONAL }
      */
-    int is_cacert = 0; /* DEFAULT FALSE */
+    *ca_istrue = 0; /* DEFAULT FALSE */
     *max_pathlen = 0; /* endless */
 
     if( ( ret = asn1_get_tag( p, end, &len,
@@ -745,16 +744,16 @@
     if( *p == end )
         return 0;
 
-    if( ( ret = asn1_get_bool( p, end, &is_cacert ) ) != 0 )
+    if( ( ret = asn1_get_bool( p, end, ca_istrue ) ) != 0 )
     {
         if( ret == POLARSSL_ERR_ASN1_UNEXPECTED_TAG )
-            ret = asn1_get_int( p, end, &is_cacert );
+            ret = asn1_get_int( p, end, ca_istrue );
 
         if( ret != 0 )
             return( POLARSSL_ERR_X509_CERT_INVALID_EXTENSIONS | ret );
 
-        if( is_cacert != 0 )
-            is_cacert = 1;
+        if( *ca_istrue != 0 )
+            *ca_istrue = 1;
     }
 
     if( *p == end )
@@ -769,7 +768,6 @@
 
     (*max_pathlen)++;
 
-    *ca_istrue = is_critical & is_cacert;
     return 0;
 }
 
@@ -909,7 +907,7 @@
         {
             /* Parse basic constraints */
             if( ( ret = x509_get_basic_constraints( p, end_ext_octet,
-                    is_critical, &crt->ca_istrue, &crt->max_pathlen ) ) != 0 )
+                    &crt->ca_istrue, &crt->max_pathlen ) ) != 0 )
                 return ( ret );
             crt->ext_types |= EXT_BASIC_CONSTRAINTS;
         }