summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/decoding.c2
-rw-r--r--lib/libtasn1.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/lib/decoding.c b/lib/decoding.c
index fcf3aff..2240b09 100644
--- a/lib/decoding.c
+++ b/lib/decoding.c
@@ -332,7 +332,7 @@ _asn1_get_time_der (unsigned type, const unsigned char *der, int der_len, int *r
return ASN1_TIME_ENCODING_ERROR;
}
- if (flags & ASN1_DECODE_FLAG_STRICT_DER)
+ if ((flags & ASN1_DECODE_FLAG_STRICT_DER) && !(flags & ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME))
{
p = &der[len_len];
for (i=0;i<(unsigned)(str_len-1);i++)
diff --git a/lib/libtasn1.h b/lib/libtasn1.h
index 0d6203d..ffb0806 100644
--- a/lib/libtasn1.h
+++ b/lib/libtasn1.h
@@ -191,6 +191,8 @@ extern "C"
#define ASN1_DECODE_FLAG_ALLOW_PADDING 1
/* This flag would ensure that no BER decoding takes place */
#define ASN1_DECODE_FLAG_STRICT_DER (1<<1)
+/* This flag will tolerate Time encoding errors when in strict DER */
+#define ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME (1<<2)
struct asn1_data_node_st