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 | } |
