diff options
author | miod <> | 2014-09-26 19:30:38 +0000 |
---|---|---|
committer | miod <> | 2014-09-26 19:30:38 +0000 |
commit | 95519954bb32998ee415d159b5b8ca1be9e0d827 (patch) | |
tree | 7f7634f17db9c09df5a86cfa209ebe8982b6e8b7 | |
parent | d6d3c94e716944f599b1fba47074672a44305369 (diff) | |
download | openbsd-95519954bb32998ee415d159b5b8ca1be9e0d827.tar.gz openbsd-95519954bb32998ee415d159b5b8ca1be9e0d827.tar.bz2 openbsd-95519954bb32998ee415d159b5b8ca1be9e0d827.zip |
X509at_add1_attr(): do not free stuff we did not allocate in the error path.
ok tedu@
-rw-r--r-- | src/lib/libcrypto/x509/x509_att.c | 6 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509/x509_att.c | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/libcrypto/x509/x509_att.c b/src/lib/libcrypto/x509/x509_att.c index 4ae7504cae..e3acc18ed1 100644 --- a/src/lib/libcrypto/x509/x509_att.c +++ b/src/lib/libcrypto/x509/x509_att.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509_att.c,v 1.11 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: x509_att.c,v 1.12 2014/09/26 19:30:38 miod Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -140,7 +140,7 @@ X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, X509_ATTRIBUTE *attr) | |||
140 | if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) | 140 | if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) |
141 | goto err; | 141 | goto err; |
142 | } else | 142 | } else |
143 | sk= *x; | 143 | sk = *x; |
144 | 144 | ||
145 | if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) | 145 | if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) |
146 | goto err2; | 146 | goto err2; |
@@ -155,7 +155,7 @@ err: | |||
155 | err2: | 155 | err2: |
156 | if (new_attr != NULL) | 156 | if (new_attr != NULL) |
157 | X509_ATTRIBUTE_free(new_attr); | 157 | X509_ATTRIBUTE_free(new_attr); |
158 | if (sk != NULL) | 158 | if (sk != NULL && sk != *x) |
159 | sk_X509_ATTRIBUTE_free(sk); | 159 | sk_X509_ATTRIBUTE_free(sk); |
160 | return (NULL); | 160 | return (NULL); |
161 | } | 161 | } |
diff --git a/src/lib/libssl/src/crypto/x509/x509_att.c b/src/lib/libssl/src/crypto/x509/x509_att.c index 4ae7504cae..e3acc18ed1 100644 --- a/src/lib/libssl/src/crypto/x509/x509_att.c +++ b/src/lib/libssl/src/crypto/x509/x509_att.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509_att.c,v 1.11 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: x509_att.c,v 1.12 2014/09/26 19:30:38 miod Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -140,7 +140,7 @@ X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, X509_ATTRIBUTE *attr) | |||
140 | if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) | 140 | if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) |
141 | goto err; | 141 | goto err; |
142 | } else | 142 | } else |
143 | sk= *x; | 143 | sk = *x; |
144 | 144 | ||
145 | if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) | 145 | if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) |
146 | goto err2; | 146 | goto err2; |
@@ -155,7 +155,7 @@ err: | |||
155 | err2: | 155 | err2: |
156 | if (new_attr != NULL) | 156 | if (new_attr != NULL) |
157 | X509_ATTRIBUTE_free(new_attr); | 157 | X509_ATTRIBUTE_free(new_attr); |
158 | if (sk != NULL) | 158 | if (sk != NULL && sk != *x) |
159 | sk_X509_ATTRIBUTE_free(sk); | 159 | sk_X509_ATTRIBUTE_free(sk); |
160 | return (NULL); | 160 | return (NULL); |
161 | } | 161 | } |