diff options
Diffstat (limited to 'crypto/asn1')
-rw-r--r-- | crypto/asn1/a_bitstr.c | 2 | ||||
-rw-r--r-- | crypto/asn1/a_int.c | 4 | ||||
-rw-r--r-- | crypto/asn1/a_utctm.c | 8 | ||||
-rw-r--r-- | crypto/asn1/asn1_lib.c | 4 | ||||
-rw-r--r-- | crypto/asn1/asn1_par.c | 12 | ||||
-rw-r--r-- | crypto/asn1/evp_asn1.c | 3 | ||||
-rw-r--r-- | crypto/asn1/p5_pbe.c | 3 | ||||
-rw-r--r-- | crypto/asn1/tasn_fre.c | 26 | ||||
-rw-r--r-- | crypto/asn1/x_algor.c | 3 | ||||
-rw-r--r-- | crypto/asn1/x_pkey.c | 3 | ||||
-rw-r--r-- | crypto/asn1/x_x509a.c | 3 |
11 files changed, 36 insertions, 35 deletions
diff --git a/crypto/asn1/a_bitstr.c b/crypto/asn1/a_bitstr.c index 5a5cc23cb1..4078be4c4b 100644 --- a/crypto/asn1/a_bitstr.c +++ b/crypto/asn1/a_bitstr.c @@ -177,7 +177,7 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, return (ret); err: ASN1err(ASN1_F_C2I_ASN1_BIT_STRING, i); - if ((ret != NULL) && ((a == NULL) || (*a != ret))) + if ((a == NULL) || (*a != ret)) ASN1_BIT_STRING_free(ret); return (NULL); } diff --git a/crypto/asn1/a_int.c b/crypto/asn1/a_int.c index a33e3fd8ef..65fac75698 100644 --- a/crypto/asn1/a_int.c +++ b/crypto/asn1/a_int.c @@ -265,7 +265,7 @@ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp, return (ret); err: ASN1err(ASN1_F_C2I_ASN1_INTEGER, i); - if ((ret != NULL) && ((a == NULL) || (*a != ret))) + if ((a == NULL) || (*a != ret)) ASN1_INTEGER_free(ret); return (NULL); } @@ -334,7 +334,7 @@ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, return (ret); err: ASN1err(ASN1_F_D2I_ASN1_UINTEGER, i); - if ((ret != NULL) && ((a == NULL) || (*a != ret))) + if ((a == NULL) || (*a != ret)) ASN1_INTEGER_free(ret); return (NULL); } diff --git a/crypto/asn1/a_utctm.c b/crypto/asn1/a_utctm.c index 2dac3b58b4..0e2f1b0c40 100644 --- a/crypto/asn1/a_utctm.c +++ b/crypto/asn1/a_utctm.c @@ -193,11 +193,11 @@ ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, int free_s = 0; if (s == NULL) { - free_s = 1; s = ASN1_UTCTIME_new(); + if (s == NULL) + goto err; + free_s = 1; } - if (s == NULL) - goto err; ts = OPENSSL_gmtime(&t, &data); if (ts == NULL) @@ -233,7 +233,7 @@ ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, #endif return (s); err: - if (free_s && s) + if (free_s) ASN1_UTCTIME_free(s); return NULL; } diff --git a/crypto/asn1/asn1_lib.c b/crypto/asn1/asn1_lib.c index fe63b6249c..2e36cff055 100644 --- a/crypto/asn1/asn1_lib.c +++ b/crypto/asn1/asn1_lib.c @@ -429,7 +429,9 @@ void ASN1_STRING_free(ASN1_STRING *a) void ASN1_STRING_clear_free(ASN1_STRING *a) { - if (a && a->data && !(a->flags & ASN1_STRING_FLAG_NDEF)) + if (a == NULL) + return; + if (a->data && !(a->flags & ASN1_STRING_FLAG_NDEF)) OPENSSL_cleanse(a->data, a->length); ASN1_STRING_free(a); } diff --git a/crypto/asn1/asn1_par.c b/crypto/asn1/asn1_par.c index 20f3a88b85..574e8de867 100644 --- a/crypto/asn1/asn1_par.c +++ b/crypto/asn1/asn1_par.c @@ -276,10 +276,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, nl = 1; } } - if (os != NULL) { - ASN1_OCTET_STRING_free(os); - os = NULL; - } + ASN1_OCTET_STRING_free(os); + os = NULL; } else if (tag == V_ASN1_INTEGER) { ASN1_INTEGER *bs; int i; @@ -356,10 +354,8 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, } ret = 1; end: - if (o != NULL) - ASN1_OBJECT_free(o); - if (os != NULL) - ASN1_OCTET_STRING_free(os); + ASN1_OBJECT_free(o); + ASN1_OCTET_STRING_free(os); *pp = p; return (ret); } diff --git a/crypto/asn1/evp_asn1.c b/crypto/asn1/evp_asn1.c index 3664576a81..e6a5b5f28f 100644 --- a/crypto/asn1/evp_asn1.c +++ b/crypto/asn1/evp_asn1.c @@ -187,8 +187,7 @@ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, err: ASN1err(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING, ASN1_R_DATA_IS_WRONG); } - if (os != NULL) - ASN1_OCTET_STRING_free(os); + ASN1_OCTET_STRING_free(os); if (ai != NULL) ASN1_INTEGER_free(ai); return (ret); diff --git a/crypto/asn1/p5_pbe.c b/crypto/asn1/p5_pbe.c index bdbfdcd67c..d54b0943fe 100644 --- a/crypto/asn1/p5_pbe.c +++ b/crypto/asn1/p5_pbe.c @@ -118,8 +118,7 @@ int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, err: if (pbe != NULL) PBEPARAM_free(pbe); - if (pbe_str != NULL) - ASN1_STRING_free(pbe_str); + ASN1_STRING_free(pbe_str); return 0; } diff --git a/crypto/asn1/tasn_fre.c b/crypto/asn1/tasn_fre.c index 49c5793a49..bdc26f9bb4 100644 --- a/crypto/asn1/tasn_fre.c +++ b/crypto/asn1/tasn_fre.c @@ -85,6 +85,7 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, const ASN1_AUX *aux = it->funcs; ASN1_aux_cb *asn1_cb; int i; + if (!pval) return; if ((it->itype != ASN1_ITYPE_PRIMITIVE) && !*pval) @@ -116,6 +117,7 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, i = asn1_get_choice_selector(pval, it); if ((i >= 0) && (i < it->tcount)) { ASN1_VALUE **pchval; + tt = it->templates + i; pchval = asn1_get_field_ptr(pval, tt); ASN1_template_free(pchval, tt); @@ -170,35 +172,41 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt) { - int i; if (tt->flags & ASN1_TFLG_SK_MASK) { STACK_OF(ASN1_VALUE) *sk = (STACK_OF(ASN1_VALUE) *)*pval; + int i; + for (i = 0; i < sk_ASN1_VALUE_num(sk); i++) { - ASN1_VALUE *vtmp; - vtmp = sk_ASN1_VALUE_value(sk, i); + ASN1_VALUE *vtmp = sk_ASN1_VALUE_value(sk, i); + asn1_item_combine_free(&vtmp, ASN1_ITEM_ptr(tt->item), 0); } sk_ASN1_VALUE_free(sk); *pval = NULL; - } else + } else { asn1_item_combine_free(pval, ASN1_ITEM_ptr(tt->item), tt->flags & ASN1_TFLG_COMBINE); + } } void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it) { int utype; + + /* Special case: if 'it' is a primitive with a free_func, use that. */ if (it) { - const ASN1_PRIMITIVE_FUNCS *pf; - pf = it->funcs; + const ASN1_PRIMITIVE_FUNCS *pf = it->funcs; + if (pf && pf->prim_free) { pf->prim_free(pval, it); return; } } - /* Special case: if 'it' is NULL free contents of ASN1_TYPE */ + + /* Special case: if 'it' is NULL, free contents of ASN1_TYPE */ if (!it) { ASN1_TYPE *typ = (ASN1_TYPE *)*pval; + utype = typ->type; pval = &typ->value.asn1_value; if (!*pval) @@ -235,8 +243,8 @@ void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it) default: ASN1_STRING_free((ASN1_STRING *)*pval); - *pval = NULL; break; } - *pval = NULL; + if (*pval) + *pval = NULL; } diff --git a/crypto/asn1/x_algor.c b/crypto/asn1/x_algor.c index 0aa3dedbae..30d648159f 100644 --- a/crypto/asn1/x_algor.c +++ b/crypto/asn1/x_algor.c @@ -86,8 +86,7 @@ int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, void *pval) return 0; } if (alg) { - if (alg->algorithm) - ASN1_OBJECT_free(alg->algorithm); + ASN1_OBJECT_free(alg->algorithm); alg->algorithm = aobj; } if (ptype == 0) diff --git a/crypto/asn1/x_pkey.c b/crypto/asn1/x_pkey.c index cf5fd804a9..f4396e7d17 100644 --- a/crypto/asn1/x_pkey.c +++ b/crypto/asn1/x_pkey.c @@ -143,8 +143,7 @@ void X509_PKEY_free(X509_PKEY *x) if (x->enc_algor != NULL) X509_ALGOR_free(x->enc_algor); - if (x->enc_pkey != NULL) - ASN1_OCTET_STRING_free(x->enc_pkey); + ASN1_OCTET_STRING_free(x->enc_pkey); if (x->dec_pkey != NULL) EVP_PKEY_free(x->dec_pkey); if ((x->key_data != NULL) && (x->key_free)) diff --git a/crypto/asn1/x_x509a.c b/crypto/asn1/x_x509a.c index 2a2ca87178..8be50b55e2 100644 --- a/crypto/asn1/x_x509a.c +++ b/crypto/asn1/x_x509a.c @@ -159,8 +159,7 @@ int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj) if (!objtmp || sk_ASN1_OBJECT_push(aux->trust, objtmp)) return 1; err: - if (objtmp) - ASN1_OBJECT_free(objtmp); + ASN1_OBJECT_free(objtmp); return 0; } |