diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_object.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_object.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c index b3a7e672ee..34221e0e98 100644 --- a/src/lib/libcrypto/asn1/a_object.c +++ b/src/lib/libcrypto/asn1/a_object.c | |||
@@ -310,8 +310,7 @@ c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long len) | |||
310 | /* once detached we can change it */ | 310 | /* once detached we can change it */ |
311 | if ((data == NULL) || (ret->length < len)) { | 311 | if ((data == NULL) || (ret->length < len)) { |
312 | ret->length = 0; | 312 | ret->length = 0; |
313 | if (data != NULL) | 313 | free(data); |
314 | free(data); | ||
315 | data = malloc(len ? (int)len : 1); | 314 | data = malloc(len ? (int)len : 1); |
316 | if (data == NULL) { | 315 | if (data == NULL) { |
317 | i = ERR_R_MALLOC_FAILURE; | 316 | i = ERR_R_MALLOC_FAILURE; |
@@ -365,15 +364,12 @@ ASN1_OBJECT_free(ASN1_OBJECT *a) | |||
365 | if (a == NULL) | 364 | if (a == NULL) |
366 | return; | 365 | return; |
367 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) { | 366 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) { |
368 | if (a->sn != NULL) | 367 | free((void *)a->sn); |
369 | free((void *)a->sn); | 368 | free((void *)a->ln); |
370 | if (a->ln != NULL) | ||
371 | free((void *)a->ln); | ||
372 | a->sn = a->ln = NULL; | 369 | a->sn = a->ln = NULL; |
373 | } | 370 | } |
374 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) { | 371 | if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) { |
375 | if (a->data != NULL) | 372 | free((void *)a->data); |
376 | free((void *)a->data); | ||
377 | a->data = NULL; | 373 | a->data = NULL; |
378 | a->length = 0; | 374 | a->length = 0; |
379 | } | 375 | } |