summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsg <>2014-04-17 17:30:22 +0000
committerjsg <>2014-04-17 17:30:22 +0000
commitbe0fb4329cddeefa911490f2b43cba7e095d4112 (patch)
treebfc5432e721864a2de1b829a3ef22ab023e4479c
parent4548a3c094321575d43f2a8cd16539acf62e7628 (diff)
downloadopenbsd-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.c8
-rw-r--r--src/lib/libcrypto/ocsp/ocsp_ht.c14
-rw-r--r--src/lib/libcrypto/pem/pvkfmt.c4
-rw-r--r--src/lib/libcrypto/x509/x509_lu.c4
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn_mime.c8
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_ht.c14
-rw-r--r--src/lib/libssl/src/crypto/pem/pvkfmt.c4
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_lu.c4
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;