summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1')
-rw-r--r--src/lib/libcrypto/asn1/Makefile.ssl3
-rw-r--r--src/lib/libcrypto/asn1/a_strnid.c2
-rw-r--r--src/lib/libcrypto/asn1/asn1_lib.c2
-rw-r--r--src/lib/libcrypto/asn1/asn1_mac.h23
-rw-r--r--src/lib/libcrypto/asn1/p7_lib.c2
-rw-r--r--src/lib/libcrypto/asn1/x_crl.c10
-rw-r--r--src/lib/libcrypto/asn1/x_name.c6
7 files changed, 38 insertions, 10 deletions
diff --git a/src/lib/libcrypto/asn1/Makefile.ssl b/src/lib/libcrypto/asn1/Makefile.ssl
index b8059ddffe..dace5be2bc 100644
--- a/src/lib/libcrypto/asn1/Makefile.ssl
+++ b/src/lib/libcrypto/asn1/Makefile.ssl
@@ -75,7 +75,8 @@ all: lib
75 75
76lib: $(LIBOBJ) 76lib: $(LIBOBJ)
77 $(AR) $(LIB) $(LIBOBJ) 77 $(AR) $(LIB) $(LIBOBJ)
78 $(RANLIB) $(LIB) 78 @echo You may get an error following this line. Please ignore.
79 - $(RANLIB) $(LIB)
79 @touch lib 80 @touch lib
80 81
81files: 82files:
diff --git a/src/lib/libcrypto/asn1/a_strnid.c b/src/lib/libcrypto/asn1/a_strnid.c
index 6b10cff994..732e68fe46 100644
--- a/src/lib/libcrypto/asn1/a_strnid.c
+++ b/src/lib/libcrypto/asn1/a_strnid.c
@@ -133,7 +133,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in,
133 if(tbl) { 133 if(tbl) {
134 mask = tbl->mask; 134 mask = tbl->mask;
135 if(!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask; 135 if(!(tbl->flags & STABLE_NO_MASK)) mask &= global_mask;
136 ret = ASN1_mbstring_ncopy(out, in, inlen, inform, tbl->mask, 136 ret = ASN1_mbstring_ncopy(out, in, inlen, inform, mask,
137 tbl->minsize, tbl->maxsize); 137 tbl->minsize, tbl->maxsize);
138 } else ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask); 138 } else ret = ASN1_mbstring_copy(out, in, inlen, inform, DIRSTRING_TYPE & global_mask);
139 if(ret <= 0) return NULL; 139 if(ret <= 0) return NULL;
diff --git a/src/lib/libcrypto/asn1/asn1_lib.c b/src/lib/libcrypto/asn1/asn1_lib.c
index 77447a5240..a8b651e54e 100644
--- a/src/lib/libcrypto/asn1/asn1_lib.c
+++ b/src/lib/libcrypto/asn1/asn1_lib.c
@@ -301,7 +301,7 @@ int asn1_GetSequence(ASN1_CTX *c, long *length)
301 return(0); 301 return(0);
302 } 302 }
303 if (c->inf == (1|V_ASN1_CONSTRUCTED)) 303 if (c->inf == (1|V_ASN1_CONSTRUCTED))
304 c->slen= *length+ *(c->pp)-c->p; 304 c->slen= *length;
305 c->eos=0; 305 c->eos=0;
306 return(1); 306 return(1);
307 } 307 }
diff --git a/src/lib/libcrypto/asn1/asn1_mac.h b/src/lib/libcrypto/asn1/asn1_mac.h
index 4512ba6cc6..af0e664b2d 100644
--- a/src/lib/libcrypto/asn1/asn1_mac.h
+++ b/src/lib/libcrypto/asn1/asn1_mac.h
@@ -196,6 +196,9 @@ err:\
196 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 196 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
197 M_ASN1_I2D_put_SEQUENCE_type(type,a,f); 197 M_ASN1_I2D_put_SEQUENCE_type(type,a,f);
198 198
199#define M_ASN1_I2D_put_SEQUENCE_opt_ex_type(type,a,f) \
200 if (a) M_ASN1_I2D_put_SEQUENCE_type(type,a,f);
201
199#define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \ 202#define M_ASN1_D2I_get_IMP_set_opt(b,func,free_func,tag) \
200 if ((c.slen != 0) && \ 203 if ((c.slen != 0) && \
201 (M_ASN1_next == \ 204 (M_ASN1_next == \
@@ -389,6 +392,9 @@ err:\
389 if ((a != NULL) && (sk_##type##_num(a) != 0)) \ 392 if ((a != NULL) && (sk_##type##_num(a) != 0)) \
390 M_ASN1_I2D_len_SEQUENCE_type(type,a,f); 393 M_ASN1_I2D_len_SEQUENCE_type(type,a,f);
391 394
395#define M_ASN1_I2D_len_SEQUENCE_opt_ex_type(type,a,f) \
396 if (a) M_ASN1_I2D_len_SEQUENCE_type(type,a,f);
397
392#define M_ASN1_I2D_len_IMP_SET(a,f,x) \ 398#define M_ASN1_I2D_len_IMP_SET(a,f,x) \
393 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET); 399 ret+=i2d_ASN1_SET(a,NULL,f,x,V_ASN1_CONTEXT_SPECIFIC,IS_SET);
394 400
@@ -452,6 +458,15 @@ err:\
452 ret+=ASN1_object_size(1,v,mtag); \ 458 ret+=ASN1_object_size(1,v,mtag); \
453 } 459 }
454 460
461#define M_ASN1_I2D_len_EXP_SEQUENCE_opt_ex_type(type,a,f,mtag,tag,v) \
462 if (a)\
463 { \
464 v=i2d_ASN1_SET_OF_##type(a,NULL,f,tag, \
465 V_ASN1_UNIVERSAL, \
466 IS_SEQUENCE); \
467 ret+=ASN1_object_size(1,v,mtag); \
468 }
469
455/* Put Macros */ 470/* Put Macros */
456#define M_ASN1_I2D_put(a,f) f(a,&p) 471#define M_ASN1_I2D_put(a,f) f(a,&p)
457 472
@@ -536,6 +551,14 @@ err:\
536 IS_SEQUENCE); \ 551 IS_SEQUENCE); \
537 } 552 }
538 553
554#define M_ASN1_I2D_put_EXP_SEQUENCE_opt_ex_type(type,a,f,mtag,tag,v) \
555 if (a) \
556 { \
557 ASN1_put_object(&p,1,v,mtag,V_ASN1_CONTEXT_SPECIFIC); \
558 i2d_ASN1_SET_OF_##type(a,&p,f,tag,V_ASN1_UNIVERSAL, \
559 IS_SEQUENCE); \
560 }
561
539#define M_ASN1_I2D_seq_total() \ 562#define M_ASN1_I2D_seq_total() \
540 r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \ 563 r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); \
541 if (pp == NULL) return(r); \ 564 if (pp == NULL) return(r); \
diff --git a/src/lib/libcrypto/asn1/p7_lib.c b/src/lib/libcrypto/asn1/p7_lib.c
index b1196ef581..8a340b0119 100644
--- a/src/lib/libcrypto/asn1/p7_lib.c
+++ b/src/lib/libcrypto/asn1/p7_lib.c
@@ -307,12 +307,14 @@ PKCS7 *d2i_PKCS7(PKCS7 **a, unsigned char **pp, long length)
307 } 307 }
308 if (Tinf == (1|V_ASN1_CONSTRUCTED)) 308 if (Tinf == (1|V_ASN1_CONSTRUCTED))
309 { 309 {
310 c.q=c.p;
310 if (!ASN1_check_infinite_end(&c.p,c.slen)) 311 if (!ASN1_check_infinite_end(&c.p,c.slen))
311 { 312 {
312 c.error=ERR_R_MISSING_ASN1_EOS; 313 c.error=ERR_R_MISSING_ASN1_EOS;
313 c.line=__LINE__; 314 c.line=__LINE__;
314 goto err; 315 goto err;
315 } 316 }
317 c.slen-=(c.p-c.q);
316 } 318 }
317 } 319 }
318 else 320 else
diff --git a/src/lib/libcrypto/asn1/x_crl.c b/src/lib/libcrypto/asn1/x_crl.c
index 1f302d0e01..51518cdf35 100644
--- a/src/lib/libcrypto/asn1/x_crl.c
+++ b/src/lib/libcrypto/asn1/x_crl.c
@@ -71,14 +71,14 @@ int i2d_X509_REVOKED(X509_REVOKED *a, unsigned char **pp)
71 71
72 M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER); 72 M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER);
73 M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME); 73 M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME);
74 M_ASN1_I2D_len_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, 74 M_ASN1_I2D_len_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions,
75 i2d_X509_EXTENSION); 75 i2d_X509_EXTENSION);
76 76
77 M_ASN1_I2D_seq_total(); 77 M_ASN1_I2D_seq_total();
78 78
79 M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER); 79 M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER);
80 M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME); 80 M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME);
81 M_ASN1_I2D_put_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, 81 M_ASN1_I2D_put_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions,
82 i2d_X509_EXTENSION); 82 i2d_X509_EXTENSION);
83 83
84 M_ASN1_I2D_finish(); 84 M_ASN1_I2D_finish();
@@ -121,7 +121,7 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp)
121 { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); } 121 { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); }
122 M_ASN1_I2D_len_SEQUENCE_opt_type(X509_REVOKED,a->revoked, 122 M_ASN1_I2D_len_SEQUENCE_opt_type(X509_REVOKED,a->revoked,
123 i2d_X509_REVOKED); 123 i2d_X509_REVOKED);
124 M_ASN1_I2D_len_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, 124 M_ASN1_I2D_len_EXP_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions,
125 i2d_X509_EXTENSION,0, 125 i2d_X509_EXTENSION,0,
126 V_ASN1_SEQUENCE,v1); 126 V_ASN1_SEQUENCE,v1);
127 127
@@ -138,7 +138,7 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp)
138 { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); } 138 { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); }
139 M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked, 139 M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked,
140 i2d_X509_REVOKED); 140 i2d_X509_REVOKED);
141 M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, 141 M_ASN1_I2D_put_EXP_SEQUENCE_opt_ex_type(X509_EXTENSION,a->extensions,
142 i2d_X509_EXTENSION,0, 142 i2d_X509_EXTENSION,0,
143 V_ASN1_SEQUENCE,v1); 143 V_ASN1_SEQUENCE,v1);
144 144
@@ -260,7 +260,7 @@ X509_CRL_INFO *X509_CRL_INFO_new(void)
260 M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new); 260 M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new);
261 ret->nextUpdate=NULL; 261 ret->nextUpdate=NULL;
262 M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null); 262 M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null);
263 M_ASN1_New(ret->extensions,sk_X509_EXTENSION_new_null); 263 ret->extensions = NULL;
264 sk_X509_REVOKED_set_cmp_func(ret->revoked,X509_REVOKED_cmp); 264 sk_X509_REVOKED_set_cmp_func(ret->revoked,X509_REVOKED_cmp);
265 return(ret); 265 return(ret);
266 M_ASN1_New_Error(ASN1_F_X509_CRL_INFO_NEW); 266 M_ASN1_New_Error(ASN1_F_X509_CRL_INFO_NEW);
diff --git a/src/lib/libcrypto/asn1/x_name.c b/src/lib/libcrypto/asn1/x_name.c
index b832deb928..1885d699ef 100644
--- a/src/lib/libcrypto/asn1/x_name.c
+++ b/src/lib/libcrypto/asn1/x_name.c
@@ -141,10 +141,12 @@ static int i2d_X509_NAME_entries(X509_NAME *a)
141 } 141 }
142 size+=i2d_X509_NAME_ENTRY(ne,NULL); 142 size+=i2d_X509_NAME_ENTRY(ne,NULL);
143 } 143 }
144
145 ret+=ASN1_object_size(1,size,V_ASN1_SET);
146 if (fe != NULL) 144 if (fe != NULL)
145 {
146 /* SET OF needed only if entries is non empty */
147 ret+=ASN1_object_size(1,size,V_ASN1_SET);
147 fe->size=size; 148 fe->size=size;
149 }
148 150
149 r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE); 151 r=ASN1_object_size(1,ret,V_ASN1_SEQUENCE);
150 152