diff options
| author | beck <> | 2015-02-13 01:16:26 +0000 | 
|---|---|---|
| committer | beck <> | 2015-02-13 01:16:26 +0000 | 
| commit | e868cd83f9f4f32fb6308f614b4d397de1e0276d (patch) | |
| tree | a34af0a85ff9dad6f41c2e6adc5b737ffb5d5655 /src | |
| parent | 17f71011dbdc7843cd4ccd2adcf653f7affcbda4 (diff) | |
| download | openbsd-e868cd83f9f4f32fb6308f614b4d397de1e0276d.tar.gz openbsd-e868cd83f9f4f32fb6308f614b4d397de1e0276d.tar.bz2 openbsd-e868cd83f9f4f32fb6308f614b4d397de1e0276d.zip | |
Don't leak memory on errors - fixes coverity issues 105353 105253
ok guenther@ jsg@
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/x509v3/v3_pmaps.c | 13 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_pmaps.c | 13 | 
2 files changed, 18 insertions, 8 deletions
| diff --git a/src/lib/libcrypto/x509v3/v3_pmaps.c b/src/lib/libcrypto/x509v3/v3_pmaps.c index 84c105892d..e8099d7f12 100644 --- a/src/lib/libcrypto/x509v3/v3_pmaps.c +++ b/src/lib/libcrypto/x509v3/v3_pmaps.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: v3_pmaps.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */ | 1 | /* $OpenBSD: v3_pmaps.c,v 1.7 2015/02/13 01:16:26 beck Exp $ */ | 
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 
| 3 | * project. | 3 | * project. | 
| 4 | */ | 4 | */ | 
| @@ -126,9 +126,9 @@ static void * | |||
| 126 | v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | 126 | v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | 
| 127 | STACK_OF(CONF_VALUE) *nval) | 127 | STACK_OF(CONF_VALUE) *nval) | 
| 128 | { | 128 | { | 
| 129 | POLICY_MAPPINGS *pmaps; | 129 | POLICY_MAPPINGS *pmaps = NULL; | 
| 130 | POLICY_MAPPING *pmap; | 130 | POLICY_MAPPING *pmap = NULL; | 
| 131 | ASN1_OBJECT *obj1, *obj2; | 131 | ASN1_OBJECT *obj1 = NULL, *obj2 = NULL; | 
| 132 | CONF_VALUE *val; | 132 | CONF_VALUE *val; | 
| 133 | int i, rc; | 133 | int i, rc; | 
| 134 | 134 | ||
| @@ -156,10 +156,12 @@ v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | |||
| 156 | } | 156 | } | 
| 157 | pmap->issuerDomainPolicy = obj1; | 157 | pmap->issuerDomainPolicy = obj1; | 
| 158 | pmap->subjectDomainPolicy = obj2; | 158 | pmap->subjectDomainPolicy = obj2; | 
| 159 | obj1 = obj2 = NULL; | ||
| 159 | if (sk_POLICY_MAPPING_push(pmaps, pmap) == 0) { | 160 | if (sk_POLICY_MAPPING_push(pmaps, pmap) == 0) { | 
| 160 | rc = ERR_R_MALLOC_FAILURE; | 161 | rc = ERR_R_MALLOC_FAILURE; | 
| 161 | goto err; | 162 | goto err; | 
| 162 | } | 163 | } | 
| 164 | pmap = NULL; | ||
| 163 | } | 165 | } | 
| 164 | return pmaps; | 166 | return pmaps; | 
| 165 | 167 | ||
| @@ -168,5 +170,8 @@ err: | |||
| 168 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, rc); | 170 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, rc); | 
| 169 | if (rc == X509V3_R_INVALID_OBJECT_IDENTIFIER) | 171 | if (rc == X509V3_R_INVALID_OBJECT_IDENTIFIER) | 
| 170 | X509V3_conf_err(val); | 172 | X509V3_conf_err(val); | 
| 173 | ASN1_OBJECT_free(obj1); | ||
| 174 | ASN1_OBJECT_free(obj2); | ||
| 175 | POLICY_MAPPING_free(pmap); | ||
| 171 | return NULL; | 176 | return NULL; | 
| 172 | } | 177 | } | 
| diff --git a/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c b/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c index 84c105892d..e8099d7f12 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_pmaps.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: v3_pmaps.c,v 1.6 2015/02/10 05:43:09 jsing Exp $ */ | 1 | /* $OpenBSD: v3_pmaps.c,v 1.7 2015/02/13 01:16:26 beck Exp $ */ | 
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 
| 3 | * project. | 3 | * project. | 
| 4 | */ | 4 | */ | 
| @@ -126,9 +126,9 @@ static void * | |||
| 126 | v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | 126 | v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | 
| 127 | STACK_OF(CONF_VALUE) *nval) | 127 | STACK_OF(CONF_VALUE) *nval) | 
| 128 | { | 128 | { | 
| 129 | POLICY_MAPPINGS *pmaps; | 129 | POLICY_MAPPINGS *pmaps = NULL; | 
| 130 | POLICY_MAPPING *pmap; | 130 | POLICY_MAPPING *pmap = NULL; | 
| 131 | ASN1_OBJECT *obj1, *obj2; | 131 | ASN1_OBJECT *obj1 = NULL, *obj2 = NULL; | 
| 132 | CONF_VALUE *val; | 132 | CONF_VALUE *val; | 
| 133 | int i, rc; | 133 | int i, rc; | 
| 134 | 134 | ||
| @@ -156,10 +156,12 @@ v2i_POLICY_MAPPINGS(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx, | |||
| 156 | } | 156 | } | 
| 157 | pmap->issuerDomainPolicy = obj1; | 157 | pmap->issuerDomainPolicy = obj1; | 
| 158 | pmap->subjectDomainPolicy = obj2; | 158 | pmap->subjectDomainPolicy = obj2; | 
| 159 | obj1 = obj2 = NULL; | ||
| 159 | if (sk_POLICY_MAPPING_push(pmaps, pmap) == 0) { | 160 | if (sk_POLICY_MAPPING_push(pmaps, pmap) == 0) { | 
| 160 | rc = ERR_R_MALLOC_FAILURE; | 161 | rc = ERR_R_MALLOC_FAILURE; | 
| 161 | goto err; | 162 | goto err; | 
| 162 | } | 163 | } | 
| 164 | pmap = NULL; | ||
| 163 | } | 165 | } | 
| 164 | return pmaps; | 166 | return pmaps; | 
| 165 | 167 | ||
| @@ -168,5 +170,8 @@ err: | |||
| 168 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, rc); | 170 | X509V3err(X509V3_F_V2I_POLICY_MAPPINGS, rc); | 
| 169 | if (rc == X509V3_R_INVALID_OBJECT_IDENTIFIER) | 171 | if (rc == X509V3_R_INVALID_OBJECT_IDENTIFIER) | 
| 170 | X509V3_conf_err(val); | 172 | X509V3_conf_err(val); | 
| 173 | ASN1_OBJECT_free(obj1); | ||
| 174 | ASN1_OBJECT_free(obj2); | ||
| 175 | POLICY_MAPPING_free(pmap); | ||
| 171 | return NULL; | 176 | return NULL; | 
| 172 | } | 177 | } | 
