summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormiod <>2015-02-14 15:28:39 +0000
committermiod <>2015-02-14 15:28:39 +0000
commit0fedd9e776a0709854241ba1cf9cffb14930eb20 (patch)
tree5ed83fbf4241c53107d2a0b83a8e7183a6d65aa5 /src
parentdd3659bdb2cb2efe9a1e088c40d40a97741b5e29 (diff)
downloadopenbsd-0fedd9e776a0709854241ba1cf9cffb14930eb20.tar.gz
openbsd-0fedd9e776a0709854241ba1cf9cffb14930eb20.tar.bz2
openbsd-0fedd9e776a0709854241ba1cf9cffb14930eb20.zip
Memory leak upon error in X509_add1_{trust,reject}_object.
ok doug@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/asn1/x_x509a.c30
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_x509a.c30
2 files changed, 46 insertions, 14 deletions
diff --git a/src/lib/libcrypto/asn1/x_x509a.c b/src/lib/libcrypto/asn1/x_x509a.c
index c0624d674b..29817915b6 100644
--- a/src/lib/libcrypto/asn1/x_x509a.c
+++ b/src/lib/libcrypto/asn1/x_x509a.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509a.c,v 1.13 2015/02/11 04:00:39 jsing Exp $ */ 1/* $OpenBSD: x_x509a.c,v 1.14 2015/02/14 15:28:39 miod 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 1999. 3 * project 1999.
4 */ 4 */
@@ -214,13 +214,21 @@ X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj)
214{ 214{
215 X509_CERT_AUX *aux; 215 X509_CERT_AUX *aux;
216 ASN1_OBJECT *objtmp; 216 ASN1_OBJECT *objtmp;
217 int rc;
218
217 if (!(objtmp = OBJ_dup(obj))) 219 if (!(objtmp = OBJ_dup(obj)))
218 return 0; 220 return 0;
219 if (!(aux = aux_get(x))) 221 if (!(aux = aux_get(x)))
220 return 0; 222 goto err;
221 if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null())) 223 if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null()))
222 return 0; 224 goto err;
223 return sk_ASN1_OBJECT_push(aux->trust, objtmp); 225 rc = sk_ASN1_OBJECT_push(aux->trust, objtmp);
226 if (rc != 0)
227 return rc;
228
229err:
230 ASN1_OBJECT_free(objtmp);
231 return 0;
224} 232}
225 233
226int 234int
@@ -228,13 +236,21 @@ X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj)
228{ 236{
229 X509_CERT_AUX *aux; 237 X509_CERT_AUX *aux;
230 ASN1_OBJECT *objtmp; 238 ASN1_OBJECT *objtmp;
239 int rc;
240
231 if (!(objtmp = OBJ_dup(obj))) 241 if (!(objtmp = OBJ_dup(obj)))
232 return 0; 242 return 0;
233 if (!(aux = aux_get(x))) 243 if (!(aux = aux_get(x)))
234 return 0; 244 goto err;
235 if (!aux->reject && !(aux->reject = sk_ASN1_OBJECT_new_null())) 245 if (!aux->reject && !(aux->reject = sk_ASN1_OBJECT_new_null()))
236 return 0; 246 goto err;
237 return sk_ASN1_OBJECT_push(aux->reject, objtmp); 247 rc = sk_ASN1_OBJECT_push(aux->reject, objtmp);
248 if (rc != 0)
249 return rc;
250
251err:
252 ASN1_OBJECT_free(objtmp);
253 return 0;
238} 254}
239 255
240void 256void
diff --git a/src/lib/libssl/src/crypto/asn1/x_x509a.c b/src/lib/libssl/src/crypto/asn1/x_x509a.c
index c0624d674b..29817915b6 100644
--- a/src/lib/libssl/src/crypto/asn1/x_x509a.c
+++ b/src/lib/libssl/src/crypto/asn1/x_x509a.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x_x509a.c,v 1.13 2015/02/11 04:00:39 jsing Exp $ */ 1/* $OpenBSD: x_x509a.c,v 1.14 2015/02/14 15:28:39 miod 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 1999. 3 * project 1999.
4 */ 4 */
@@ -214,13 +214,21 @@ X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj)
214{ 214{
215 X509_CERT_AUX *aux; 215 X509_CERT_AUX *aux;
216 ASN1_OBJECT *objtmp; 216 ASN1_OBJECT *objtmp;
217 int rc;
218
217 if (!(objtmp = OBJ_dup(obj))) 219 if (!(objtmp = OBJ_dup(obj)))
218 return 0; 220 return 0;
219 if (!(aux = aux_get(x))) 221 if (!(aux = aux_get(x)))
220 return 0; 222 goto err;
221 if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null())) 223 if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null()))
222 return 0; 224 goto err;
223 return sk_ASN1_OBJECT_push(aux->trust, objtmp); 225 rc = sk_ASN1_OBJECT_push(aux->trust, objtmp);
226 if (rc != 0)
227 return rc;
228
229err:
230 ASN1_OBJECT_free(objtmp);
231 return 0;
224} 232}
225 233
226int 234int
@@ -228,13 +236,21 @@ X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj)
228{ 236{
229 X509_CERT_AUX *aux; 237 X509_CERT_AUX *aux;
230 ASN1_OBJECT *objtmp; 238 ASN1_OBJECT *objtmp;
239 int rc;
240
231 if (!(objtmp = OBJ_dup(obj))) 241 if (!(objtmp = OBJ_dup(obj)))
232 return 0; 242 return 0;
233 if (!(aux = aux_get(x))) 243 if (!(aux = aux_get(x)))
234 return 0; 244 goto err;
235 if (!aux->reject && !(aux->reject = sk_ASN1_OBJECT_new_null())) 245 if (!aux->reject && !(aux->reject = sk_ASN1_OBJECT_new_null()))
236 return 0; 246 goto err;
237 return sk_ASN1_OBJECT_push(aux->reject, objtmp); 247 rc = sk_ASN1_OBJECT_push(aux->reject, objtmp);
248 if (rc != 0)
249 return rc;
250
251err:
252 ASN1_OBJECT_free(objtmp);
253 return 0;
238} 254}
239 255
240void 256void