summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/x_crl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/x_crl.c')
-rw-r--r--src/lib/libcrypto/asn1/x_crl.c57
1 files changed, 25 insertions, 32 deletions
diff --git a/src/lib/libcrypto/asn1/x_crl.c b/src/lib/libcrypto/asn1/x_crl.c
index cd46bbebc2..12a42d04c7 100644
--- a/src/lib/libcrypto/asn1/x_crl.c
+++ b/src/lib/libcrypto/asn1/x_crl.c
@@ -130,9 +130,9 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp)
130 } 130 }
131 M_ASN1_I2D_put(a->sig_alg,i2d_X509_ALGOR); 131 M_ASN1_I2D_put(a->sig_alg,i2d_X509_ALGOR);
132 M_ASN1_I2D_put(a->issuer,i2d_X509_NAME); 132 M_ASN1_I2D_put(a->issuer,i2d_X509_NAME);
133 M_ASN1_I2D_put(a->lastUpdate,i2d_ASN1_UTCTIME); 133 M_ASN1_I2D_put(a->lastUpdate,i2d_ASN1_TIME);
134 if (a->nextUpdate != NULL) 134 if (a->nextUpdate != NULL)
135 { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_UTCTIME); } 135 { M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_TIME); }
136 M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked, 136 M_ASN1_I2D_put_SEQUENCE_opt_type(X509_REVOKED,a->revoked,
137 i2d_X509_REVOKED); 137 i2d_X509_REVOKED);
138 M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions, 138 M_ASN1_I2D_put_EXP_SEQUENCE_opt_type(X509_EXTENSION,a->extensions,
@@ -157,20 +157,16 @@ X509_CRL_INFO *d2i_X509_CRL_INFO(X509_CRL_INFO **a, unsigned char **pp,
157 157
158 if ((ver == 0) && (ret->version != NULL)) 158 if ((ver == 0) && (ret->version != NULL))
159 { 159 {
160 ASN1_INTEGER_free(ret->version); 160 M_ASN1_INTEGER_free(ret->version);
161 ret->version=NULL; 161 ret->version=NULL;
162 } 162 }
163 M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR); 163 M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
164 M_ASN1_D2I_get(ret->issuer,d2i_X509_NAME); 164 M_ASN1_D2I_get(ret->issuer,d2i_X509_NAME);
165 M_ASN1_D2I_get(ret->lastUpdate,d2i_ASN1_TIME); 165 M_ASN1_D2I_get(ret->lastUpdate,d2i_ASN1_TIME);
166 /* Manually handle the OPTIONAL ASN1_TIME stuff */ 166 /* Manually handle the OPTIONAL ASN1_TIME stuff */
167 if(c.slen != 0 167 /* First try UTCTime */
168 && ( (M_ASN1_next & ~V_ASN1_CONSTRUCTED) == 168 M_ASN1_D2I_get_opt(ret->nextUpdate,d2i_ASN1_UTCTIME, V_ASN1_UTCTIME);
169 (V_ASN1_UNIVERSAL|V_ASN1_UTCTIME) 169 /* If that doesn't work try GeneralizedTime */
170 || (M_ASN1_next & ~V_ASN1_CONSTRUCTED) ==
171 (V_ASN1_UNIVERSAL|V_ASN1_GENERALIZEDTIME) ) ) {
172 M_ASN1_D2I_get(ret->nextUpdate,d2i_ASN1_TIME);
173 }
174 if(!ret->nextUpdate) 170 if(!ret->nextUpdate)
175 M_ASN1_D2I_get_opt(ret->nextUpdate,d2i_ASN1_GENERALIZEDTIME, 171 M_ASN1_D2I_get_opt(ret->nextUpdate,d2i_ASN1_GENERALIZEDTIME,
176 V_ASN1_GENERALIZEDTIME); 172 V_ASN1_GENERALIZEDTIME);
@@ -190,20 +186,17 @@ X509_CRL_INFO *d2i_X509_CRL_INFO(X509_CRL_INFO **a, unsigned char **pp,
190 } 186 }
191 } 187 }
192 188
193 if (ver >= 1) 189 if (ret->extensions != NULL)
194 { 190 {
195 if (ret->extensions != NULL) 191 while (sk_X509_EXTENSION_num(ret->extensions))
196 { 192 X509_EXTENSION_free(
197 while (sk_X509_EXTENSION_num(ret->extensions)) 193 sk_X509_EXTENSION_pop(ret->extensions));
198 X509_EXTENSION_free(
199 sk_X509_EXTENSION_pop(ret->extensions));
200 }
201
202 M_ASN1_D2I_get_EXP_set_opt_type(X509_EXTENSION,ret->extensions,
203 d2i_X509_EXTENSION,
204 X509_EXTENSION_free,0,
205 V_ASN1_SEQUENCE);
206 } 194 }
195
196 M_ASN1_D2I_get_EXP_set_opt_type(X509_EXTENSION,ret->extensions,
197 d2i_X509_EXTENSION,
198 X509_EXTENSION_free,0,
199 V_ASN1_SEQUENCE);
207 200
208 M_ASN1_D2I_Finish(a,X509_CRL_INFO_free,ASN1_F_D2I_X509_CRL_INFO); 201 M_ASN1_D2I_Finish(a,X509_CRL_INFO_free,ASN1_F_D2I_X509_CRL_INFO);
209 } 202 }
@@ -245,8 +238,8 @@ X509_REVOKED *X509_REVOKED_new(void)
245 ASN1_CTX c; 238 ASN1_CTX c;
246 239
247 M_ASN1_New_Malloc(ret,X509_REVOKED); 240 M_ASN1_New_Malloc(ret,X509_REVOKED);
248 M_ASN1_New(ret->serialNumber,ASN1_INTEGER_new); 241 M_ASN1_New(ret->serialNumber,M_ASN1_INTEGER_new);
249 M_ASN1_New(ret->revocationDate,ASN1_UTCTIME_new); 242 M_ASN1_New(ret->revocationDate,M_ASN1_UTCTIME_new);
250 ret->extensions=NULL; 243 ret->extensions=NULL;
251 return(ret); 244 return(ret);
252 M_ASN1_New_Error(ASN1_F_X509_REVOKED_NEW); 245 M_ASN1_New_Error(ASN1_F_X509_REVOKED_NEW);
@@ -261,7 +254,7 @@ X509_CRL_INFO *X509_CRL_INFO_new(void)
261 ret->version=NULL; 254 ret->version=NULL;
262 M_ASN1_New(ret->sig_alg,X509_ALGOR_new); 255 M_ASN1_New(ret->sig_alg,X509_ALGOR_new);
263 M_ASN1_New(ret->issuer,X509_NAME_new); 256 M_ASN1_New(ret->issuer,X509_NAME_new);
264 M_ASN1_New(ret->lastUpdate,ASN1_UTCTIME_new); 257 M_ASN1_New(ret->lastUpdate,M_ASN1_UTCTIME_new);
265 ret->nextUpdate=NULL; 258 ret->nextUpdate=NULL;
266 M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null); 259 M_ASN1_New(ret->revoked,sk_X509_REVOKED_new_null);
267 M_ASN1_New(ret->extensions,sk_X509_EXTENSION_new_null); 260 M_ASN1_New(ret->extensions,sk_X509_EXTENSION_new_null);
@@ -279,7 +272,7 @@ X509_CRL *X509_CRL_new(void)
279 ret->references=1; 272 ret->references=1;
280 M_ASN1_New(ret->crl,X509_CRL_INFO_new); 273 M_ASN1_New(ret->crl,X509_CRL_INFO_new);
281 M_ASN1_New(ret->sig_alg,X509_ALGOR_new); 274 M_ASN1_New(ret->sig_alg,X509_ALGOR_new);
282 M_ASN1_New(ret->signature,ASN1_BIT_STRING_new); 275 M_ASN1_New(ret->signature,M_ASN1_BIT_STRING_new);
283 return(ret); 276 return(ret);
284 M_ASN1_New_Error(ASN1_F_X509_CRL_NEW); 277 M_ASN1_New_Error(ASN1_F_X509_CRL_NEW);
285 } 278 }
@@ -287,8 +280,8 @@ X509_CRL *X509_CRL_new(void)
287void X509_REVOKED_free(X509_REVOKED *a) 280void X509_REVOKED_free(X509_REVOKED *a)
288 { 281 {
289 if (a == NULL) return; 282 if (a == NULL) return;
290 ASN1_INTEGER_free(a->serialNumber); 283 M_ASN1_INTEGER_free(a->serialNumber);
291 ASN1_UTCTIME_free(a->revocationDate); 284 M_ASN1_UTCTIME_free(a->revocationDate);
292 sk_X509_EXTENSION_pop_free(a->extensions,X509_EXTENSION_free); 285 sk_X509_EXTENSION_pop_free(a->extensions,X509_EXTENSION_free);
293 Free(a); 286 Free(a);
294 } 287 }
@@ -296,12 +289,12 @@ void X509_REVOKED_free(X509_REVOKED *a)
296void X509_CRL_INFO_free(X509_CRL_INFO *a) 289void X509_CRL_INFO_free(X509_CRL_INFO *a)
297 { 290 {
298 if (a == NULL) return; 291 if (a == NULL) return;
299 ASN1_INTEGER_free(a->version); 292 M_ASN1_INTEGER_free(a->version);
300 X509_ALGOR_free(a->sig_alg); 293 X509_ALGOR_free(a->sig_alg);
301 X509_NAME_free(a->issuer); 294 X509_NAME_free(a->issuer);
302 ASN1_UTCTIME_free(a->lastUpdate); 295 M_ASN1_UTCTIME_free(a->lastUpdate);
303 if (a->nextUpdate) 296 if (a->nextUpdate)
304 ASN1_UTCTIME_free(a->nextUpdate); 297 M_ASN1_UTCTIME_free(a->nextUpdate);
305 sk_X509_REVOKED_pop_free(a->revoked,X509_REVOKED_free); 298 sk_X509_REVOKED_pop_free(a->revoked,X509_REVOKED_free);
306 sk_X509_EXTENSION_pop_free(a->extensions,X509_EXTENSION_free); 299 sk_X509_EXTENSION_pop_free(a->extensions,X509_EXTENSION_free);
307 Free(a); 300 Free(a);
@@ -328,7 +321,7 @@ void X509_CRL_free(X509_CRL *a)
328 321
329 X509_CRL_INFO_free(a->crl); 322 X509_CRL_INFO_free(a->crl);
330 X509_ALGOR_free(a->sig_alg); 323 X509_ALGOR_free(a->sig_alg);
331 ASN1_BIT_STRING_free(a->signature); 324 M_ASN1_BIT_STRING_free(a->signature);
332 Free(a); 325 Free(a);
333 } 326 }
334 327