diff options
author | jsg <> | 2014-04-17 17:30:22 +0000 |
---|---|---|
committer | jsg <> | 2014-04-17 17:30:22 +0000 |
commit | be0fb4329cddeefa911490f2b43cba7e095d4112 (patch) | |
tree | bfc5432e721864a2de1b829a3ef22ab023e4479c | |
parent | 4548a3c094321575d43f2a8cd16539acf62e7628 (diff) | |
download | openbsd-be0fb4329cddeefa911490f2b43cba7e095d4112.tar.gz openbsd-be0fb4329cddeefa911490f2b43cba7e095d4112.tar.bz2 openbsd-be0fb4329cddeefa911490f2b43cba7e095d4112.zip |
fix some of the leaks
ok miod@ looks good deraadt@
-rw-r--r-- | src/lib/libcrypto/asn1/asn_mime.c | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_ht.c | 14 | ||||
-rw-r--r-- | src/lib/libcrypto/pem/pvkfmt.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/x509/x509_lu.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/asn_mime.c | 8 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/ocsp/ocsp_ht.c | 14 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/pem/pvkfmt.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509/x509_lu.c | 4 |
8 files changed, 46 insertions, 14 deletions
diff --git a/src/lib/libcrypto/asn1/asn_mime.c b/src/lib/libcrypto/asn1/asn_mime.c index d94b3cd6f8..3de73fdb1e 100644 --- a/src/lib/libcrypto/asn1/asn_mime.c +++ b/src/lib/libcrypto/asn1/asn_mime.c | |||
@@ -823,10 +823,14 @@ 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) return NULL; | 826 | if (!mhdr) |
827 | return NULL; | ||
827 | mhdr->name = tmpname; | 828 | mhdr->name = tmpname; |
828 | mhdr->value = tmpval; | 829 | mhdr->value = tmpval; |
829 | if(!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) return NULL; | 830 | if (!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) { |
831 | free(mhdr); | ||
832 | return NULL; | ||
833 | } | ||
830 | return mhdr; | 834 | return mhdr; |
831 | } | 835 | } |
832 | 836 | ||
diff --git a/src/lib/libcrypto/ocsp/ocsp_ht.c b/src/lib/libcrypto/ocsp/ocsp_ht.c index 17b252d6a8..0fa23b027b 100644 --- a/src/lib/libcrypto/ocsp/ocsp_ht.c +++ b/src/lib/libcrypto/ocsp/ocsp_ht.c | |||
@@ -167,16 +167,24 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req, | |||
167 | else | 167 | else |
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 | free(rctx); | ||
171 | return 0; | 172 | return 0; |
173 | } | ||
172 | if (!path) | 174 | if (!path) |
173 | path = "/"; | 175 | path = "/"; |
174 | 176 | ||
175 | if (BIO_printf(rctx->mem, post_hdr, path) <= 0) | 177 | if (BIO_printf(rctx->mem, post_hdr, path) <= 0) { |
178 | free(rctx->iobuf); | ||
179 | free(rctx); | ||
176 | return 0; | 180 | return 0; |
181 | } | ||
177 | 182 | ||
178 | if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) | 183 | if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) { |
184 | free(rctx->iobuf); | ||
185 | free(rctx); | ||
179 | return 0; | 186 | return 0; |
187 | } | ||
180 | 188 | ||
181 | return rctx; | 189 | return rctx; |
182 | } | 190 | } |
diff --git a/src/lib/libcrypto/pem/pvkfmt.c b/src/lib/libcrypto/pem/pvkfmt.c index 8da8e77973..59af2020ab 100644 --- a/src/lib/libcrypto/pem/pvkfmt.c +++ b/src/lib/libcrypto/pem/pvkfmt.c | |||
@@ -753,8 +753,10 @@ static EVP_PKEY *do_PVK_body(const unsigned char **in, | |||
753 | return NULL; | 753 | return NULL; |
754 | } | 754 | } |
755 | if (!derive_pvk_key(keybuf, p, saltlen, | 755 | if (!derive_pvk_key(keybuf, p, saltlen, |
756 | (unsigned char *)psbuf, inlen)) | 756 | (unsigned char *)psbuf, inlen)) { |
757 | free(enctmp); | ||
757 | return NULL; | 758 | return NULL; |
759 | } | ||
758 | p += saltlen; | 760 | p += saltlen; |
759 | /* Copy BLOBHEADER across, decrypt rest */ | 761 | /* Copy BLOBHEADER across, decrypt rest */ |
760 | memcpy(enctmp, p, 8); | 762 | memcpy(enctmp, p, 8); |
diff --git a/src/lib/libcrypto/x509/x509_lu.c b/src/lib/libcrypto/x509/x509_lu.c index 644ea83bac..cbbe8e86f8 100644 --- a/src/lib/libcrypto/x509/x509_lu.c +++ b/src/lib/libcrypto/x509/x509_lu.c | |||
@@ -187,8 +187,10 @@ X509_STORE *X509_STORE_new(void) | |||
187 | ret->verify=0; | 187 | ret->verify=0; |
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 | free(ret); | ||
191 | return NULL; | 192 | return NULL; |
193 | } | ||
192 | 194 | ||
193 | ret->get_issuer = 0; | 195 | ret->get_issuer = 0; |
194 | ret->check_issued = 0; | 196 | ret->check_issued = 0; |
diff --git a/src/lib/libssl/src/crypto/asn1/asn_mime.c b/src/lib/libssl/src/crypto/asn1/asn_mime.c index d94b3cd6f8..3de73fdb1e 100644 --- a/src/lib/libssl/src/crypto/asn1/asn_mime.c +++ b/src/lib/libssl/src/crypto/asn1/asn_mime.c | |||
@@ -823,10 +823,14 @@ 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) return NULL; | 826 | if (!mhdr) |
827 | return NULL; | ||
827 | mhdr->name = tmpname; | 828 | mhdr->name = tmpname; |
828 | mhdr->value = tmpval; | 829 | mhdr->value = tmpval; |
829 | if(!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) return NULL; | 830 | if (!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) { |
831 | free(mhdr); | ||
832 | return NULL; | ||
833 | } | ||
830 | return mhdr; | 834 | return mhdr; |
831 | } | 835 | } |
832 | 836 | ||
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c index 17b252d6a8..0fa23b027b 100644 --- a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c +++ b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c | |||
@@ -167,16 +167,24 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req, | |||
167 | else | 167 | else |
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 | free(rctx); | ||
171 | return 0; | 172 | return 0; |
173 | } | ||
172 | if (!path) | 174 | if (!path) |
173 | path = "/"; | 175 | path = "/"; |
174 | 176 | ||
175 | if (BIO_printf(rctx->mem, post_hdr, path) <= 0) | 177 | if (BIO_printf(rctx->mem, post_hdr, path) <= 0) { |
178 | free(rctx->iobuf); | ||
179 | free(rctx); | ||
176 | return 0; | 180 | return 0; |
181 | } | ||
177 | 182 | ||
178 | if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) | 183 | if (req && !OCSP_REQ_CTX_set1_req(rctx, req)) { |
184 | free(rctx->iobuf); | ||
185 | free(rctx); | ||
179 | return 0; | 186 | return 0; |
187 | } | ||
180 | 188 | ||
181 | return rctx; | 189 | return rctx; |
182 | } | 190 | } |
diff --git a/src/lib/libssl/src/crypto/pem/pvkfmt.c b/src/lib/libssl/src/crypto/pem/pvkfmt.c index 8da8e77973..59af2020ab 100644 --- a/src/lib/libssl/src/crypto/pem/pvkfmt.c +++ b/src/lib/libssl/src/crypto/pem/pvkfmt.c | |||
@@ -753,8 +753,10 @@ static EVP_PKEY *do_PVK_body(const unsigned char **in, | |||
753 | return NULL; | 753 | return NULL; |
754 | } | 754 | } |
755 | if (!derive_pvk_key(keybuf, p, saltlen, | 755 | if (!derive_pvk_key(keybuf, p, saltlen, |
756 | (unsigned char *)psbuf, inlen)) | 756 | (unsigned char *)psbuf, inlen)) { |
757 | free(enctmp); | ||
757 | return NULL; | 758 | return NULL; |
759 | } | ||
758 | p += saltlen; | 760 | p += saltlen; |
759 | /* Copy BLOBHEADER across, decrypt rest */ | 761 | /* Copy BLOBHEADER across, decrypt rest */ |
760 | memcpy(enctmp, p, 8); | 762 | memcpy(enctmp, p, 8); |
diff --git a/src/lib/libssl/src/crypto/x509/x509_lu.c b/src/lib/libssl/src/crypto/x509/x509_lu.c index 644ea83bac..cbbe8e86f8 100644 --- a/src/lib/libssl/src/crypto/x509/x509_lu.c +++ b/src/lib/libssl/src/crypto/x509/x509_lu.c | |||
@@ -187,8 +187,10 @@ X509_STORE *X509_STORE_new(void) | |||
187 | ret->verify=0; | 187 | ret->verify=0; |
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 | free(ret); | ||
191 | return NULL; | 192 | return NULL; |
193 | } | ||
192 | 194 | ||
193 | ret->get_issuer = 0; | 195 | ret->get_issuer = 0; |
194 | ret->check_issued = 0; | 196 | ret->check_issued = 0; |