summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2017-05-27 07:29:44 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2017-05-27 08:29:50 +0200
commite29327ac05a54bcd9085da5be4c5609f689ed08a (patch)
treea0448139298436077d39a9e28e86cc43bc464a54
parent14359eb55b4c5111469aabd1a8467cccec445d02 (diff)
downloadgnutls-e29327ac05a54bcd9085da5be4c5609f689ed08a.tar.gz
libtasn1: updated to 4.11
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--lib/minitasn1/decoding.c2
-rw-r--r--lib/minitasn1/libtasn1.h4
-rw-r--r--lib/minitasn1/parser_aux.c6
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;