diff options
author | jsg <> | 2014-04-17 18:38:53 +0000 |
---|---|---|
committer | jsg <> | 2014-04-17 18:38:53 +0000 |
commit | 87dc5ba7fdbe9aad46f68ad25457c433066ca01b (patch) | |
tree | 430c8107ea049150a784c44e30dc0d1f529b8a97 | |
parent | bdccac7bb03aa13ef9c01cc6ecc1cc7bc42f6f9d (diff) | |
download | openbsd-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.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/bio_asn1.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/tasn_enc.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_ht.c | 3 | ||||
-rw-r--r-- | src/lib/libcrypto/x509/x509_lu.c | 1 | ||||
-rw-r--r-- | src/lib/libcrypto/x509/x509spki.c | 2 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/asn_mime.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/bio_asn1.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/tasn_enc.c | 2 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/ocsp/ocsp_ht.c | 3 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509/x509_lu.c | 1 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509/x509spki.c | 2 |
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; |