diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2017-05-27 07:29:44 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2017-05-27 08:29:50 +0200 |
commit | e29327ac05a54bcd9085da5be4c5609f689ed08a (patch) | |
tree | a0448139298436077d39a9e28e86cc43bc464a54 | |
parent | 14359eb55b4c5111469aabd1a8467cccec445d02 (diff) | |
download | gnutls-e29327ac05a54bcd9085da5be4c5609f689ed08a.tar.gz |
libtasn1: updated to 4.11
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r-- | lib/minitasn1/decoding.c | 2 | ||||
-rw-r--r-- | lib/minitasn1/libtasn1.h | 4 | ||||
-rw-r--r-- | lib/minitasn1/parser_aux.c | 6 |
3 files changed, 10 insertions, 2 deletions
diff --git a/lib/minitasn1/decoding.c b/lib/minitasn1/decoding.c index fcf3aff0a3..2240b09406 100644 --- a/lib/minitasn1/decoding.c +++ b/lib/minitasn1/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/minitasn1/libtasn1.h b/lib/minitasn1/libtasn1.h index 0d6203d273..4ee4c54e60 100644 --- a/lib/minitasn1/libtasn1.h +++ b/lib/minitasn1/libtasn1.h @@ -44,7 +44,7 @@ extern "C" { #endif -#define ASN1_VERSION "4.10" +#define ASN1_VERSION "4.11" #if defined(__GNUC__) && !defined(ASN1_INTERNAL_BUILD) # define _ASN1_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) @@ -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 diff --git a/lib/minitasn1/parser_aux.c b/lib/minitasn1/parser_aux.c index b4a7370b9b..976ab38f18 100644 --- a/lib/minitasn1/parser_aux.c +++ b/lib/minitasn1/parser_aux.c @@ -120,6 +120,9 @@ asn1_find_node (asn1_node pointer, const char *name) if (n_end) { nsize = n_end - n_start; + if (nsize >= sizeof(n)) + return NULL; + memcpy (n, n_start, nsize); n[nsize] = 0; n_start = n_end; @@ -158,6 +161,9 @@ asn1_find_node (asn1_node pointer, const char *name) if (n_end) { nsize = n_end - n_start; + if (nsize >= sizeof(n)) + return NULL; + memcpy (n, n_start, nsize); n[nsize] = 0; n_start = n_end; |