- Inceased maximum size of ASN1 length reads to 32-bits

diff --git a/ChangeLog b/ChangeLog
index df4dd7a..bf33cf7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,7 @@
    * Documentation for AES and Camellia in modes CTR and CFB128 clarified.
    * Fixed rsa_encrypt and rsa_decrypt examples to use public key for
      encryption and private key for decryption. (Closes ticket #34)
+   * Inceased maximum size of ASN1 length reads to 32-bits.
 
 Bugfix
    * Fixed faulty HMAC-MD2 implementation. Found by dibac. (Closes
diff --git a/library/x509parse.c b/library/x509parse.c
index 58399eb..e359ca7 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -89,6 +89,22 @@
             (*p) += 3;
             break;
 
+        case 3:
+            if( ( end - *p ) < 4 )
+                return( POLARSSL_ERR_ASN1_OUT_OF_DATA );
+
+            *len = ( (*p)[1] << 16 ) | ( (*p)[2] << 8 ) | (*p)[3];
+            (*p) += 4;
+            break;
+
+        case 4:
+            if( ( end - *p ) < 5 )
+                return( POLARSSL_ERR_ASN1_OUT_OF_DATA );
+
+            *len = ( (*p)[1] << 24 ) | ( (*p)[2] << 16 ) | ( (*p)[3] << 8 ) | (*p)[4];
+            (*p) += 5;
+            break;
+
         default:
             return( POLARSSL_ERR_ASN1_INVALID_LENGTH );
         }