summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsg <>2014-04-17 18:38:53 +0000
committerjsg <>2014-04-17 18:38:53 +0000
commit87dc5ba7fdbe9aad46f68ad25457c433066ca01b (patch)
tree430c8107ea049150a784c44e30dc0d1f529b8a97
parentbdccac7bb03aa13ef9c01cc6ecc1cc7bc42f6f9d (diff)
downloadopenbsd-87dc5ba7fdbe9aad46f68ad25457c433066ca01b.tar.gz
openbsd-87dc5ba7fdbe9aad46f68ad25457c433066ca01b.tar.bz2
openbsd-87dc5ba7fdbe9aad46f68ad25457c433066ca01b.zip
fix some more leaks, mostly suggestions from miod
ok miod@
-rw-r--r--src/lib/libcrypto/asn1/asn_mime.c4
-rw-r--r--src/lib/libcrypto/asn1/bio_asn1.c4
-rw-r--r--src/lib/libcrypto/asn1/tasn_enc.c2
-rw-r--r--src/lib/libcrypto/ocsp/ocsp_ht.c3
-rw-r--r--src/lib/libcrypto/x509/x509_lu.c1
-rw-r--r--src/lib/libcrypto/x509/x509spki.c2
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn_mime.c4
-rw-r--r--src/lib/libssl/src/crypto/asn1/bio_asn1.c4
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_enc.c2
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_ht.c3
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_lu.c1
-rw-r--r--src/lib/libssl/src/crypto/x509/x509spki.c2
12 files changed, 28 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/asn_mime.c b/src/lib/libcrypto/asn1/asn_mime.c
index 3de73fdb1e..2b600ab411 100644
--- a/src/lib/libcrypto/asn1/asn_mime.c
+++ b/src/lib/libcrypto/asn1/asn_mime.c
@@ -823,8 +823,10 @@ static MIME_HEADER *mime_hdr_new(char *name, char *value)
823 } 823 }
824 } else tmpval = NULL; 824 } else tmpval = NULL;
825 mhdr = (MIME_HEADER *) malloc(sizeof(MIME_HEADER)); 825 mhdr = (MIME_HEADER *) malloc(sizeof(MIME_HEADER));
826 if (!mhdr) 826 if (!mhdr) {
827 OPENSSL_free(tmpname);
827 return NULL; 828 return NULL;
829 }
828 mhdr->name = tmpname; 830 mhdr->name = tmpname;
829 mhdr->value = tmpval; 831 mhdr->value = tmpval;
830 if (!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) { 832 if (!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) {
diff --git a/src/lib/libcrypto/asn1/bio_asn1.c b/src/lib/libcrypto/asn1/bio_asn1.c
index fa98dba728..b59645909c 100644
--- a/src/lib/libcrypto/asn1/bio_asn1.c
+++ b/src/lib/libcrypto/asn1/bio_asn1.c
@@ -153,8 +153,10 @@ static int asn1_bio_new(BIO *b)
153 ctx = malloc(sizeof(BIO_ASN1_BUF_CTX)); 153 ctx = malloc(sizeof(BIO_ASN1_BUF_CTX));
154 if (!ctx) 154 if (!ctx)
155 return 0; 155 return 0;
156 if (!asn1_bio_init(ctx, DEFAULT_ASN1_BUF_SIZE)) 156 if (!asn1_bio_init(ctx, DEFAULT_ASN1_BUF_SIZE)) {
157 free(ctx);
157 return 0; 158 return 0;
159 }
158 b->init = 1; 160 b->init = 1;
159 b->ptr = (char *)ctx; 161 b->ptr = (char *)ctx;
160 b->flags = 0; 162 b->flags = 0;
diff --git a/src/lib/libcrypto/asn1/tasn_enc.c b/src/lib/libcrypto/asn1/tasn_enc.c
index 9ab0473d73..54e3f7a94a 100644
--- a/src/lib/libcrypto/asn1/tasn_enc.c
+++ b/src/lib/libcrypto/asn1/tasn_enc.c
@@ -455,6 +455,8 @@ static int asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out,
455 * sizeof(*derlst)); 455 * sizeof(*derlst));
456 tmpdat = malloc(skcontlen); 456 tmpdat = malloc(skcontlen);
457 if (!derlst || !tmpdat) 457 if (!derlst || !tmpdat)
458 free(derlst);
459 free(tmpdat);
458 return 0; 460 return 0;
459 } 461 }
460 } 462 }
diff --git a/src/lib/libcrypto/ocsp/ocsp_ht.c b/src/lib/libcrypto/ocsp/ocsp_ht.c
index 0fa23b027b..db20759d3b 100644
--- a/src/lib/libcrypto/ocsp/ocsp_ht.c
+++ b/src/lib/libcrypto/ocsp/ocsp_ht.c
@@ -168,6 +168,7 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
168 rctx->iobuflen = OCSP_MAX_LINE_LEN; 168 rctx->iobuflen = OCSP_MAX_LINE_LEN;
169 rctx->iobuf = malloc(rctx->iobuflen); 169 rctx->iobuf = malloc(rctx->iobuflen);
170 if (!rctx->iobuf) { 170 if (!rctx->iobuf) {
171 BIO_free(rctx->mem);
171 free(rctx); 172 free(rctx);
172 return 0; 173 return 0;
173 } 174 }
@@ -176,12 +177,14 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
176 177
177 if (BIO_printf(rctx->mem, post_hdr, path) <= 0) { 178 if (BIO_printf(rctx->mem, post_hdr, path) <= 0) {
178 free(rctx->iobuf); 179 free(rctx->iobuf);
180 BIO_free(rctx->mem);
179 free(rctx); 181 free(rctx);
180 return 0; 182 return 0;
181 } 183 }
182 184
183 if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) { 185 if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) {
184 free(rctx->iobuf); 186 free(rctx->iobuf);
187 BIO_free(rctx->mem);
185 free(rctx); 188 free(rctx);
186 return 0; 189 return 0;
187 } 190 }
diff --git a/src/lib/libcrypto/x509/x509_lu.c b/src/lib/libcrypto/x509/x509_lu.c
index cbbe8e86f8..38b034bfee 100644
--- a/src/lib/libcrypto/x509/x509_lu.c
+++ b/src/lib/libcrypto/x509/x509_lu.c
@@ -188,6 +188,7 @@ X509_STORE *X509_STORE_new(void)
188 ret->verify_cb=0; 188 ret->verify_cb=0;
189 189
190 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) { 190 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) {
191 sk_X509_OBJECT_free(ret->objs);
191 free(ret); 192 free(ret);
192 return NULL; 193 return NULL;
193 } 194 }
diff --git a/src/lib/libcrypto/x509/x509spki.c b/src/lib/libcrypto/x509/x509spki.c
index 28bc12e1a2..9f0fbd39e3 100644
--- a/src/lib/libcrypto/x509/x509spki.c
+++ b/src/lib/libcrypto/x509/x509spki.c
@@ -111,6 +111,8 @@ char * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki)
111 b64_str = malloc(der_len * 2); 111 b64_str = malloc(der_len * 2);
112 if(!der_spki || !b64_str) { 112 if(!der_spki || !b64_str) {
113 X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); 113 X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE);
114 free(der_spki);
115 free(b64_str);
114 return NULL; 116 return NULL;
115 } 117 }
116 p = der_spki; 118 p = der_spki;
diff --git a/src/lib/libssl/src/crypto/asn1/asn_mime.c b/src/lib/libssl/src/crypto/asn1/asn_mime.c
index 3de73fdb1e..2b600ab411 100644
--- a/src/lib/libssl/src/crypto/asn1/asn_mime.c
+++ b/src/lib/libssl/src/crypto/asn1/asn_mime.c
@@ -823,8 +823,10 @@ static MIME_HEADER *mime_hdr_new(char *name, char *value)
823 } 823 }
824 } else tmpval = NULL; 824 } else tmpval = NULL;
825 mhdr = (MIME_HEADER *) malloc(sizeof(MIME_HEADER)); 825 mhdr = (MIME_HEADER *) malloc(sizeof(MIME_HEADER));
826 if (!mhdr) 826 if (!mhdr) {
827 OPENSSL_free(tmpname);
827 return NULL; 828 return NULL;
829 }
828 mhdr->name = tmpname; 830 mhdr->name = tmpname;
829 mhdr->value = tmpval; 831 mhdr->value = tmpval;
830 if (!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) { 832 if (!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) {
diff --git a/src/lib/libssl/src/crypto/asn1/bio_asn1.c b/src/lib/libssl/src/crypto/asn1/bio_asn1.c
index fa98dba728..b59645909c 100644
--- a/src/lib/libssl/src/crypto/asn1/bio_asn1.c
+++ b/src/lib/libssl/src/crypto/asn1/bio_asn1.c
@@ -153,8 +153,10 @@ static int asn1_bio_new(BIO *b)
153 ctx = malloc(sizeof(BIO_ASN1_BUF_CTX)); 153 ctx = malloc(sizeof(BIO_ASN1_BUF_CTX));
154 if (!ctx) 154 if (!ctx)
155 return 0; 155 return 0;
156 if (!asn1_bio_init(ctx, DEFAULT_ASN1_BUF_SIZE)) 156 if (!asn1_bio_init(ctx, DEFAULT_ASN1_BUF_SIZE)) {
157 free(ctx);
157 return 0; 158 return 0;
159 }
158 b->init = 1; 160 b->init = 1;
159 b->ptr = (char *)ctx; 161 b->ptr = (char *)ctx;
160 b->flags = 0; 162 b->flags = 0;
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_enc.c b/src/lib/libssl/src/crypto/asn1/tasn_enc.c
index 9ab0473d73..54e3f7a94a 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_enc.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_enc.c
@@ -455,6 +455,8 @@ static int asn1_set_seq_out(STACK_OF(ASN1_VALUE) *sk, unsigned char **out,
455 * sizeof(*derlst)); 455 * sizeof(*derlst));
456 tmpdat = malloc(skcontlen); 456 tmpdat = malloc(skcontlen);
457 if (!derlst || !tmpdat) 457 if (!derlst || !tmpdat)
458 free(derlst);
459 free(tmpdat);
458 return 0; 460 return 0;
459 } 461 }
460 } 462 }
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
index 0fa23b027b..db20759d3b 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
@@ -168,6 +168,7 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
168 rctx->iobuflen = OCSP_MAX_LINE_LEN; 168 rctx->iobuflen = OCSP_MAX_LINE_LEN;
169 rctx->iobuf = malloc(rctx->iobuflen); 169 rctx->iobuf = malloc(rctx->iobuflen);
170 if (!rctx->iobuf) { 170 if (!rctx->iobuf) {
171 BIO_free(rctx->mem);
171 free(rctx); 172 free(rctx);
172 return 0; 173 return 0;
173 } 174 }
@@ -176,12 +177,14 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
176 177
177 if (BIO_printf(rctx->mem, post_hdr, path) <= 0) { 178 if (BIO_printf(rctx->mem, post_hdr, path) <= 0) {
178 free(rctx->iobuf); 179 free(rctx->iobuf);
180 BIO_free(rctx->mem);
179 free(rctx); 181 free(rctx);
180 return 0; 182 return 0;
181 } 183 }
182 184
183 if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) { 185 if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) {
184 free(rctx->iobuf); 186 free(rctx->iobuf);
187 BIO_free(rctx->mem);
185 free(rctx); 188 free(rctx);
186 return 0; 189 return 0;
187 } 190 }
diff --git a/src/lib/libssl/src/crypto/x509/x509_lu.c b/src/lib/libssl/src/crypto/x509/x509_lu.c
index cbbe8e86f8..38b034bfee 100644
--- a/src/lib/libssl/src/crypto/x509/x509_lu.c
+++ b/src/lib/libssl/src/crypto/x509/x509_lu.c
@@ -188,6 +188,7 @@ X509_STORE *X509_STORE_new(void)
188 ret->verify_cb=0; 188 ret->verify_cb=0;
189 189
190 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) { 190 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) {
191 sk_X509_OBJECT_free(ret->objs);
191 free(ret); 192 free(ret);
192 return NULL; 193 return NULL;
193 } 194 }
diff --git a/src/lib/libssl/src/crypto/x509/x509spki.c b/src/lib/libssl/src/crypto/x509/x509spki.c
index 28bc12e1a2..9f0fbd39e3 100644
--- a/src/lib/libssl/src/crypto/x509/x509spki.c
+++ b/src/lib/libssl/src/crypto/x509/x509spki.c
@@ -111,6 +111,8 @@ char * NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *spki)
111 b64_str = malloc(der_len * 2); 111 b64_str = malloc(der_len * 2);
112 if(!der_spki || !b64_str) { 112 if(!der_spki || !b64_str) {
113 X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE); 113 X509err(X509_F_NETSCAPE_SPKI_B64_ENCODE, ERR_R_MALLOC_FAILURE);
114 free(der_spki);
115 free(b64_str);
114 return NULL; 116 return NULL;
115 } 117 }
116 p = der_spki; 118 p = der_spki;